2014-11-24 103 views
2

乘以不同尺寸的阵列。不同尺寸的乘法阵列

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

怎么办?

回答

6
>>> 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]) 
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 
+0

你缺少尺寸检查 – 2014-11-24 02:34:37

0

以上回答是正确的,但在一个线路做而不创建临时

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