python-在numpy数组中加权平面的最佳方法是什么?
作者:互联网
我有以下代码,其中w是兼容维的一维numpy数组,而M是4D数组,
i = 0
for weight in w:
M[:, :, i, :] *= weight
i += 1
有没有更好的方法可以达到相同的效果?
解决方法:
您将使用w中的元素沿轴= 2缩放M,这是一维数组.因此,您需要将w扩展到np.newaxis/None
的2D数组,这将使w的扩展版本与M之间的轴对齐.然后,在这两个数组之间执行逐元素乘法以引入broadcasting
作为矢量化解决方案,例如-
M *= w[:,None]
如果M的axis = 2的长度大于w中的元素数,则需要在乘以M之前选择沿axis = 2的范围,例如-
M[...,np.arange(w.size),:] *= w[:,None]
标签:numpy-broadcasting,python,numpy 来源: https://codeday.me/bug/20191027/1943973.html