Numpy matrix必须是2维的,但是 numpy arrays (ndarrays) 可以是多维的(1D,2D,3D····ND). Matrix是Array的一个小的分支,包含于Array。所以matrix 拥有array的所有特性。
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]]
matrix 和 array 都可以通过objects后面加 . T .T .T 得到其转置。但是 matrix objects 还可以在后面加 . H .H .H 得到共轭矩阵, 加 . I .I .I 得到逆矩阵。
运算符的作用也不一样 :因为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]]
当然你可以通过下面的两条命令轻松的实现两者之间的转换: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]])