【发布时间】:2013-05-14 12:48:31
【问题描述】:
我有 3 个 numpy 数组 dm_w, dm_s 和 dm_p。我需要并行遍历这些数组,根据检查条件进行一些计算,如下面的代码所示。
我的代码适用于较小的数组,但对于较大的数组则耗时太长。我需要一种有效且更快的方法来实现这一目标。需要一些专家意见。
我的代码:
prox_mat = []
for w_dist, s_dist, PI in zip(np.nditer(dm_w), np.nditer(dm_s), np.nditer(dm_p)):
if PI == 0.0:
proximity_score = ((w_dist + len(np.unique(dm_s) * s_dist)) /
(dm_w.shape[0] * len(np.unique(dm_s))))
prox_mat.append(proximity_score)
else:
proximity_score = ((w_dist + len(np.unique(dm_s) * s_dist)) /
(dm_w.shape[0] * len(np.unique(dm_s)))) * log10(10 * PI)
prox_mat.append(proximity_score)
ps = np.array(prox_mat)
ps = np.reshape(ps, dm_w.shape)
【问题讨论】:
-
在我看来,你可以计算 np.unique 一次,而不是每次都通过循环。这可以为您节省大量时间,而无需并行化。
标签: python arrays python-2.7 numpy python-3.x