我有一个形状A
的数组(w,h) = 3000,2000
和形状B
d = 100
我想将A
的每个值乘以B
,并以形状为C
(w,h,d) = 3000,2000,100
的形式得到结果
现在我正在使用下面非常慢的代码,我该如何对此操作进行矢量化?
w,h,d = 3000,2000,100
A = np.ones((w,h))
B = np.arange(d)
C = np.zeros((w,h,d))
for i in xrange(w):
for j in xrange(h):
C[i,j] = A[i,j] * B
谢谢
答案 0 :(得分:5)
使用numpy broadcast。
试试这个
from numpy.random import rand
a = rand(4,5)
b = rand(6)
c = a[...,None] * b
print (c.shape)
或平等地
c = a.reshape(4,5,1)*b