Numpy中的矢量化 - 广播

bet*_*use 3 python arrays numpy vectorization

我在python中有一个代码,包含以下元素:

我有一个这样的intensities矢量:

array([ 1142.,  1192.,  1048., ...,    29.,    18.,    35.])
Run Code Online (Sandbox Code Playgroud)

我还有一个x看起来像这样的矢量:

array([   0,    1,    1, ..., 1060, 1060, 1061])
Run Code Online (Sandbox Code Playgroud)

然后,我有for循环,我填充另一个向量,radialDistribution像这样:

for i in range(1000):
    radialDistribution[i] = sum(intensities[np.where(x == i)]) / len(np.where(x == i)[0])
Run Code Online (Sandbox Code Playgroud)

问题是它需要20秒才能完成它...因此我想对它进行矢量化.但我对Numpy的广播很新,并没有找到那么多......所以我需要你的帮助.

我试过这个,但没有用:

i= np.ogrid[:1000]
intensities[i] = sum(sortedIntensities1D[np.where(sortedDists1D == i)]) / len(np.where(sortedDists1D == i)[0])
Run Code Online (Sandbox Code Playgroud)

你能帮我告诉我在哪里可以学习Numpy的矢量化程序吗?

提前感谢您的宝贵帮助!

Jai*_*ime 5

如果x向量具有从0开始的连续整数,那么您可以简单地执行:

radialDistribution = np.bincount(x, weights=intensities) / np.bincount(x)
Run Code Online (Sandbox Code Playgroud)