python - Numpy 中的矢量化 - 广播

标签 python arrays numpy vectorization

我有一个 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/

相关文章:

python - 获取 Numpy 二维数组相交行的索引

python - 使用 matplotlib.pyplot.plot_date 绘制多数据集

python - 从环境文件中读取环境变量

python - 在 python 中 json.load 文件的等效方法?

python - Ubuntu 14.04 上的 Vim 使用了一个有趣的 python 路径,python 无法在其他模块中导入 _io

java - 当我将二维数组向左移动超过两次时,它会替换其中一个数字

python Pyodbc,无法在表中创建名为 "Date"的字段

ruby - 在 ruby 中对二维数组进行排序

javascript - 如何展开和折叠单个字符数组?

python - 在列后的矩阵列中查找最小值和值的索引