编程语言
首页 > 编程语言> > python-在numpy数组中加权平面的最佳方法是什么?

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