Python 科学计算 | Numpy 库中 ndarray 与 matrix 类型的区别和使用注意

Python科学计算库中有ndarray和matrix两种类都可以表示矩阵, 那么它们之间有什么联系和区别呢?

ndarray

ndarray是通用数组数据类型, 支持一维, 二维, 至多维的运算

1
2
3
4
5
6
>>> x = np.array([[2.+1.j, 1.-1.j], [1.-1.j, 1.+1.j]])
>>> x = x[None, ...]
>>> x**2 # 逐个求平方
>>> y = np.eye(2) # 二阶单位阵
>>> x * y # dot mul = np.multiply(x,y)
>>> np.dot(x,y) # mat mul 矩阵乘法 = x @ y

matrix

matrix是矩阵类型, 仅支持二维矩阵的运算, 只是相当于ndarray的一个子集. 优势是写法非常舒服, 接近日常数学公式的书写.

比如, 声明矩阵就可以用引号,双引号扩出.

1
2
>>> x = np.mat("2+1.j, 1-1.j; 1-1.j, 1+1.j", dtype=np.complex64)
>>> y = np.mat(np.eye(2))

进行矩阵运算也很方便

1
2
3
>>> x ** 2 # 矩阵平方
>>> x * y # np.dot(x,y) = x @ y
>>> np.multiply(x,y) # 元素相乘

相互转换

两种数据类型之间也可以相互转换, 使用方法 np.asmatrixnp.asarray

Explore | 有趣的问题 Wierd | 不常见的C语言写法

评论

You forgot to set the shortname for Disqus. Please set it in _config.yml.
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×