numpy中"*"、outer、dot、multiply的用法和区别
1、关于 "*" 的用法;
"*" 也为对于元素的乘积,但是 "*" 作为乘法运算时,必须满足 numpy 的 broadcasting(广播) 的原则 ,当两个矩阵相乘时,其法则为两矩阵的对应的元素相乘,其用法与multiply相同( 见后介绍 ) 。
例1:矩阵 a*b 相乘,其中 a 为 3*4,b 为 1*4;
import numpy as np
a = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
b = np.array([1,2,3,4])
c = a*b
print(c)
结果:
例2:矩阵 a,b 相乘,其中 a 为 3*4,b 为 3*1;
import numpy as np
a = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
d = np.array([[1],[2],[3]])
e = a*d
print(e)
结果:
2、关于 outer 的用法;
numpy.outer(a, b, out=None): 计算两个向量的外积。假设向量 a = [a0, a1, ... , aM], b = [b0, b1, ..., bN], 则 a*b =[[a0*b0, a0*b1, ... ,a0*bM], [a1*b0, a1*b1, ... , a1*bN], .... , [aM*b0, aM*b1, ... , aM*bN]]; 注意:若 a,b 不为一维数组,则先将其变成一维数组,即可得 a(M,)和 b(N,) 这种形式。
例: 矩阵 x1,x2相乘, 其中 x1 为 1*15,x2 为 1*15;
import numpy as np
x1 = [9,2,5,0,0,7,5,0,0,0,9,2,5,0,0]
x2 = [9,2,2,9,0,9,2,5,0,0,9,2,5,0,0]
X = np.outer(x1,x2)
print(X)
结果:
3、关于 dot 的用法;
numpy.dot(a, b, out=None):对于一维数组,则是想啊零的乘积;对于二维数组,它相当于矩阵的乘法。
例1:矩阵 a, b 相乘,其中 a 为1*3,b 为1*3;
import numpy as np
a = np.array([1,2,3])
b = np.array([1,2,3])
c = np.dot(a,b)
print(c)
结果:
例1:矩阵 a, b 相乘,其中 a 为1*2,b 为2*1;
import numpy as np
a = np.array([1,2,3])
b = np.array([[1],[2],[3]])
c = np.dot(a,b)
print(c)
结果:
4、关于 multiply 的用法;
numpy.multiply(): 为矩阵的相应元素的乘积。
注意: 两矩阵的维度大小一样;
例: 矩阵a, b相乘,其中 a 为 3*3, b 为3*3。
import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
b = np.array([[1,2,3],[4,5,6],[7,8,9]])
c = np.multiply(a,b)
print(c)
结果:
指针空旅者: 2019删了就连安装程序都闪退
f2932842805: 2022版用不了这个方法
洗柏柏菜: 你好,我在修改时,变量这个颜色改不掉,要怎么办呢
ZpuCipuc: 我靠 折腾了一天 总算解决了 谢谢up
xiaoxin_ganbade: 操作完了,还是没变呀