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的矢量化程序吗?
提前感谢您的宝贵帮助!
如果x向量具有从0开始的连续整数,那么您可以简单地执行:
radialDistribution = np.bincount(x, weights=intensities) / np.bincount(x)
Run Code Online (Sandbox Code Playgroud)