numpy matrix 与ndarray的区别

本文详细介绍了NumPy中矩阵(matrix)与数组(ndarray)的区别,包括它们的维度特性、矩阵乘法的不同实现方式、相互转换的方法以及特殊运算符的作用等。此外还探讨了在进行归约运算时两者的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

版本:2.7.10

例子:

A=np.array([[1,2],[3,4]])
B=np.array([[5,6],[7,8]])

C=np.mat([[1,2],[3,4]])
D=np.mat([[6,7],[8,9]])
1.ndarray 可以是任意维数 mat只能是2维的
#正常
A=np.array([[[1,2]]])
#报错
B = np.mat([[[1,2]]]) 
2.矩阵乘法
ndarray: 
    1. np.dot  是叉乘 (各元素相乘后相加)
        A.dot(B)=np.dot(A,B) 
        得到:
            array([[19, 22],
                  [43, 50]])
     2 A*B=np.multiply(A,B) (各对应位置元素相乘)

     得到:
     array([[ 5, 12],
            [21, 32]])
matrix:

    1. C*D=np.dot(C,D)=C.dot(D)  (各元素相乘后相加)
    得到:
    matrix([[22, 25],
           [50, 57]])
    2. np=np.multiply(C,D)  (各对应位置元素相乘)
    得到:
        matrix([[6, 7],
                [8, 9]])
3.matrix与ndarray互换
1.matrix->ndarray  (使用matrix对象的A属性或者np.asarray()方法)
    E=C.A
    E=np.asarray(C)
    #注意E和A共享内存空间,修改了A之后E的值也会被修改

2.ndarray->matrix (使用np.asmatrix()方法)
    E=np.asmatrix(A)
4.matrix 和 array 都可以通过objects后面加.T 得到其转置。但是 matrix objects 还可以在后面加 .H f得到共轭矩阵, 加 .I 得到逆矩阵。
5.** 运算符的作用也不一样 :因为a是个matrix,所以a**2返回的是a*a,相当于矩阵相乘。而c是array,c**2相当于,c中的元素逐个求平方
6.numpy 中的array与numpy中的matrix的最大的不同是,在做归约运算时,array的维数会发生变化,但matrix总是保持为2维。例如下面求平均值的运算
>>> C
matrix([[1, 2],
        [3, 4]])
>>> C.mean(1)
matrix([[1.5],
        [3.5]])
>>> A
array([[1, 2],
       [3, 4]])
>>> A.mean(1)
array([1.5, 3.5])
>>> 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值