Python中flatten( )函数;矩阵.A(等效于矩阵.getA())变成了数组

 

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]
>>> 
  •  

猜你喜欢

转载自blog.csdn.net/jiangsujiangjiang/article/details/83651874