乘以不同尺寸的阵列。不同尺寸的乘法阵列
import numpy as np
a = np.array([1,2,3,4,5])
b = np.array([1,2,3])
print a*b
Ofcourse错误:
ValueError: operands could not be broadcast together with shapes (5,) (3,)
预期的结果是np.array([1,4,9,0,0])
怎么办?
乘以不同尺寸的阵列。不同尺寸的乘法阵列
import numpy as np
a = np.array([1,2,3,4,5])
b = np.array([1,2,3])
print a*b
Ofcourse错误:
ValueError: operands could not be broadcast together with shapes (5,) (3,)
预期的结果是np.array([1,4,9,0,0])
怎么办?
>>> a = np.array([1,2,3,4,5])
>>> b = np.array([1,2,3])
>>> b.resize(a.shape)
>>> a * b
array([1, 4, 9, 0, 0])
取决于尺寸的差别附加一个零阵列,以较小的阵列:
import numpy as np
a = np.array([1,2,3,4,5])
b = np.array([1,2,3])
diff = len(a) - len(b)
c = np.append(b, np.zeros(diff))
print a*c
以上回答是正确的,但在一个线路做而不创建临时
c=np.append(a,np.zeros(0 if (len(b) - len(a))<0 else (len(b) - len(a))))*np.append(b,np.zeros(0 if (len(a) - len(b))<0 else (len(a) - len(b))))
你缺少尺寸检查 – 2014-11-24 02:34:37