Numpy与Python内置数据类型list的异同
Python 本身是设计为通用编程语言的,在科学计算方面远远不如MATLAB等语言。但是Python支持开发了Numpy,Numpy使Python有潜力在科学计算领域类比Matlab。numpy的array和list都可以表示多维数组,但各有优劣。list的通用性较强,通过嵌套形成多维数组,元素类型可以不同,实际存储的是数据的指针,还需另外存储指针和数据,在大数组情况下存储和吞吐效率较低;numpy的array是numpy的主要对象,专门为科学计算设计,元素类型必须相同,每个dimension称为一个axes,通过一组正整数来访问(list还可以通过负整数访问),array的操作和计算函数都是通过C编写,不受python解释器的限制,代码复杂度低,计算效率和吞吐效率高。
语法细节的不同:
- 寻址的形式:[1,1](只有numpy.array可以),[1] [1](numpy.array和list都可以)
- 元素类型,list可以不同,numpy的array必须相同。
- 相互转换:numpy.array();list()
Numpy.array与Numpy.matrix的异同
numpy中还有一种数据类型matrix,matrix只能是二维的,赋值和运算与array有很多小的区别。
语法细节的不同:
- 赋值的形式:
import numpy as np
a=np.mat('4 3; 2 1')
c=np.array([[4, 3], [2, 1]])
- matrix可以有转置.T,共轭.H,逆矩阵.I;array只能用.T
- 点积运算:array是*;matrix是np.multiply()
- 矩阵乘:array用np.dot();matrix是*
- 乘介运算**:对于matrix是矩阵乘,对于array是点积
- 在做归约运算时,array的维数会发生变化,但matrix总是保持为2维
- 相互转换:numpy.asmatrix();numpy.asarray()
numpy的其他特性
具有一定英文基础的同志建议在需要是利用numpy官网查阅使用,权威方便。