【发布时间】:2020-01-15 18:26:28
【问题描述】:
我在 python 中执行以下操作:
tmp = np.empty_like(J,dtype=X.dtype)
for idx, (ii, jj) in enumerate(zip(I, J)):
tmp[idx] = sum((X[ii] - X[jj])**2)
其中 X 是一个 50000 x 128 的 numpy 数组 并且 I 和 J 是大小为 (763690,) 的整数 numpy 数组(稀疏矩阵的列和行)
现在的问题是上述操作大约需要 30 秒才能完成,我看不出我需要做什么来加快速度。我知道它可以做得更快,因为我在 Matlab 中有一个类似的代码,几乎不需要任何时间。
我在这里做错了什么? 是否与内存跨步访问有关?,不使用内置函数?或者是其他东西?我应该并行化/矢量化它吗?
(我知道标题很糟糕,但我想不出一个好的方法来写它,欢迎提出建议!)
【问题讨论】:
标签: python performance numpy optimization vectorization