python@运算符 numpy矩阵相乘

前言
我在《python数学实验与建模》这本书中发现了@运算符,这可真是个奇怪的符号!我大量的尝试与查资料后,终于揭开这个@的意义

一、@运算符
1.仅仅支持数组运算
因此,必须用到numpy.array()才能使用这个运算符

2.这是python3.5后的新运算符
它与numpy.dot()的作用是一样的,矩阵乘法(就是线性代数里学的)!
举个例子:

from numpy import array,dot
a=array([[1,2],
        [1,2]])
b=array([[5,6],
        [5,6]])
print(a@b)
print(dot(a,b))

结果是:

[[15 18]
 [15 18]]
[[15 18]
 [15 18]]

说明了这两种运算方法是一样的

二、注意事项
1.矩阵@向量
这是个特殊情况,我在这卡了挺久的。如果第二个位置放的是向量(向量可以看作是1行n列的矩阵)的话,那么向量会转置!
举个例子:

from numpy import array,dot
e=array([[1,2],
         [1,2],
         [1,2]])
f=array([1,2])#1*2
#print(f@g)#好像并不能自动转置
print(e@f)#草,我懂了,f看做向量,如果把f放在第二位,会自动转置
print(dot(e,f))


结果:

[5 5 5]
[5 5 5]
————————————————

原文链接:https://blog.csdn.net/m0_53392188/article/details/118862901

猜你喜欢

转载自blog.csdn.net/jacke121/article/details/128425452