我想做这样的事情:
a = # multi-dimensional numpy array
ares = # multi-dim array, same shape as a
a.shape
>>> (45, 72, 37, 24) # the relevant point is that all dimension are different
v = # 1D numpy array, i.e. a vector
v.shape
>>> (37) # note that v has the same length as the 3rd dimension of a
for i in range(37):
ares[:,:,i,:] = a[:,:,i,:]*v[i]
我认为必须有一种更紧凑的方式来使用 numpy 执行此操作,但我还没有弄清楚。我想我可以复制 v 然后计算a*v
,但我猜还有比这更好的东西。所以我需要“在给定的轴上”进行元素乘法,可以这么说。有谁知道我该怎么做?谢谢。(顺便说一句,我确实发现了一个重复的问题,但由于 OP 的特殊问题的性质,讨论非常简短,并被跟踪到其他问题。)