flatten()函数用法
flatten是numpy.ndarray.flatten的一个函数,即返回一个一维数组。
flatten只能适用于numpy对象,即array或者mat,普通的list列表不适用!。
a.flatten():a是个数组,a.flatten()就是把a降到一维,默认是按行的方向降,降维后还是数组类型 。
a.flatten().A:a是个矩阵,降维后还是个矩阵,矩阵.A(等效于矩阵.getA())变成了数组。具体看下面的例子:
1、用于array(数组)对象
>>> from numpy import *
>>> a=array([[1,2],[3,4],[5,6]]) #多维数组(3,2)3行2列
>>> a
array([[1, 2],
[3, 4],
[5, 6]])
>>> a.flatten() #默认按行的方向降维
array([1, 2, 3, 4, 5, 6] ) #降维后变成1维数组
>>> a.flatten('F') # 按列降维
array([1, 3, 5, 2, 4, 6])
>>> a.flatten('A') #按行降维
array([1, 2, 3, 4, 5, 6])
>>>
2、用于mat(矩阵)对象
对矩阵matrix不使用flatten()函数降维:
1、matrix.A : 表示将矩阵matrix转换为多维数组, 若矩阵是3行3列,则转化为3维数组,3行3列
2、matrix.A[0] (一个一维数组): 取多维数组中第一行元素, matrix.A[1]:取多维数组中第二行元素
c = mat([[1, 2, 5, 6],[2,3,4,5],[1,2,3,4]])
print(c.A)
print(type(c.A))
print(c.A[1])
print(type(c.A[1]))
#结果如下:
[[1 2 5 6]
[2 3 4 5]
[1 2 3 4]]
<class 'numpy.ndarray'>
[2 3 4 5]
<class 'numpy.ndarray'>
对矩阵matrix使用flatten()函数降维
1、matrix.flatten()降成1维矩阵,
2、matrix.flatten().A[0](一个一维数组):取出一维矩阵的第一行元素,因为1维只有1行!
>>> a=mat([[1,2,3],[4,5,6]]) # a是一个矩阵
>>> a
matrix([[1, 2, 3],
[4, 5, 6]])
>>> a.flatten() # 降维后还是一个矩阵
matrix([[1, 2, 3, 4, 5, 6]])
>>> a.flatten().A # 二维数组(两个中括号[])
array([[1,2,3,4,5,6]]) # 该数组大小为一行6列(1,6)
>>> a.flatten().A[0] # 一维数组(一个中括号[])
array([1, 2, 3, 4, 5, 6])
# matrix.A : 表示将矩阵matrix转换为二维数组(矩阵a是一个二维矩阵)
# matrix.A[0] : 取二维数组中第一行元素
3、但是该方法不能用于list对象,想要list达到同样的效果可以使用列表表达式:
>>> a=array([[1,2],[3,4],[5,6]])
>>> [y for x in a for y in x]
[1, 2, 3, 4, 5, 6]
>>>