用python中的numpy包的时候不当心踩了array和matrix的大坑,又引伸一下比较list array matrix之间的异同。
数据结构(Data Structures)基本上人如其名——它们只是一种结构,可以将一些数据聚合在一块儿。换句话说,它们是用来存储一系列相关数据的集合。Python 中有四种内置的数据结构——列表(List)、元组(Tuple)、字典(Dictionary)和集合(Set)。python
一、list
list能够明显和array、matrix区分,list经过[ ]申明,支持append extend等方法,没有shape方法。
使用以下:
data=[]
data.append([1,2])
data.extend(2)
list形如:[[1,2,3],[4,5,6],[7,8,9]] 、 [1,2,3,4,5]等数据结构
2 array matrix
list变成array: np.array(list)
list变为matrxi:np.mat(list)
array和matrix相互转换: np.asmatrix np.asarray
array变换为list: data.toList()
这两兄弟都有shape属性,可是他俩的区别是啥呢。
matrix是array的子集,matrix只能是2维的,array能够是n维的。
2维就是matrix的shape只有行、列属性,就相似线性代数中的矩阵;
好比说3维的array如同: app
下面就来比较array好matrix计算区别:
乘法符号 *:array的乘法符号就是对应元素相乘,好比:
若是行列数不匹配会自动补全,就是numpy的“广播”功能。具体怎么补全本身动手试,讲了也记不住。
matrix的 * 符号就是:矩阵乘法:线性代数中的乘法,好比五行三列*三行两列就会获得五行两列:
matrix想要获得矩阵*这种效果(就是矩阵相同位置的数字进行相乘):使用np.multiply(mat1,mat2)
array想要进行矩阵乘法使用:np.dot(array1,array2)
因此martirx和array中 **符号获得的结果也是不同的。spa
版权声明:本文为博主原创文章,转载注明出处便可。 https://blog.csdn.net/u011730199/article/details/78202016.net