Numpy中的array和martrix的区别

tech2023-02-28  91

Numpy中的array和martrix的区别

1.维数

Numpy matrix必须是2维的,但是 numpy arrays (ndarrays) 可以是多维的(1D,2D,3D····ND). Matrix是Array的一个小的分支,包含于Array。所以matrix 拥有array的所有特性。

2.乘法符号

在numpy中matrix的乘法符号:a*b,就是矩阵积。在numpy里面arrays遵从逐个元素的运算,所以array:c*d运算相当于对应位置相乘。而矩阵相乘,则需要numpy里面的dot命令 。 a = matrix([[1,0,],[0,1]]) b = matrix([[1, 2], [3,4]]) print(a*b) #运行结果:矩阵相乘 # [[1 2] # [3 4]] c = array([[1,0,],[0,1]]) d = array([[1, 2], [3,4]]) print(c*d) #运行结果:对应位置相乘 # [[1 0] # [0 4]] print(c.dot(d)) #运行结果:矩阵相乘 # [[1 2] # [3 4]]

3.特殊矩阵的转换

matrix 和 array 都可以通过objects后面加 . T .T .T 得到其转置。但是 matrix objects 还可以在后面加 . H .H .H 得到共轭矩阵, 加 . I .I .I 得到逆矩阵。

4.运算符

运算符的作用也不一样 :因为a是个matrix,所以a ** 2返回的是a*a,相当于矩阵相乘。而c是array,c**2相当于,c中的元素逐个求平方。

e =matrix([[1,2],[3,4]]) f =array([[1,2],[3,4]]) print(e**2) #运行结果: # [[ 7 10] # [15 22]] print(f**2) #运行结果 # [[ 1 4] # [ 9 16]]

5.矩阵和数组之间的转换

当然你可以通过下面的两条命令轻松的实现两者之间的转换:np.asmatrix和np.asarray

>>> from numpy import * >>> a = matrix([[1,0,],[0,1]]) >>> a matrix([[1, 0], [0, 1]]) >>> b= asarray(a) >>> b array([[1, 0], [0, 1]]) >>> c =asmatrix(b) >>> c matrix([[1, 0], [0, 1]])
最新回复(0)