我有以下代码,其中 w 是兼容维度的 1D numpy 数组,M 是 4D 数组,
i = 0
for weight in w:
M[:, :, i, :] *= weight
i += 1
有没有更好的方法达到同样的效果?
最佳答案
您正在使用 w
中的元素沿 axis=2
缩放 M
,这是一个 1D
数组.因此,您需要使用 np.newaxis/None
将 w
扩展为二维数组。 ,这将使 w 的扩展版本
与 M
之间的轴对齐。然后,在这两个数组之间执行逐元素乘法,得到 broadcasting
。对于矢量化解决方案,就像这样 -
M *= w[:,None]
如果M
的axis=2
的长度大于w
中的元素个数,则需要选择范围在相乘之前沿 axis=2
in M
,像这样 -
M[...,np.arange(w.size),:] *= w[:,None]
关于python - 在 numpy 数组中加权平面的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35268247/