Numpy中的array和martrix的区别

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]])

你可能感兴趣的:(python)