我有一个 python 代码,包含以下元素:
我有一个 intensities
向量,它是这样的:
array([ 1142., 1192., 1048., ..., 29., 18., 35.])
我还有一个 x
向量,如下所示:
array([ 0, 1, 1, ..., 1060, 1060, 1061])
然后,我使用 for 循环填充另一个向量,radialDistribution
,如下所示:
for i in range(1000):
radialDistribution[i] = sum(intensities[np.where(x == i)]) / len(np.where(x == i)[0])
问题是它需要 20 秒才能完成...因此我想对其进行矢量化。但我对 Numpy 中的广播还很陌生,并没有发现太多......因此我需要你的帮助。
我试过了,但是没用:
i= np.ogrid[:1000]
intensities[i] = sum(sortedIntensities1D[np.where(sortedDists1D == i)]) / len(np.where(sortedDists1D == i)[0])
你能帮我告诉我应该去哪里学习 Numpy 的矢量化程序吗?
在此先感谢您的宝贵帮助!
最佳答案
如果您的 x
向量具有从 0 开始的连续整数,那么您可以简单地执行以下操作:
radialDistribution = np.bincount(x, weights=intensities) / np.bincount(x)
关于python - Numpy 中的矢量化 - 广播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22566134/