【发布时间】:2019-05-18 02:21:10
【问题描述】:
我有一个 N×M 数组,我需要在其中的每个条目处执行一些 NumPy 操作并将结果放在那里。
现在,我用双循环以天真的方式来做:
import numpy as np
N = 10
M = 11
K = 100
result = np.zeros((N, M))
is_relevant = np.random.rand(N, M, K) > 0.5
weight = np.random.rand(3, 3, K)
values1 = np.random.rand(3, 3, K)
values2 = np.random.rand(3, 3, K)
for i in range(N):
for j in range(M):
selector = is_relevant[i, j, :]
result[i, j] = np.sum(
np.multiply(
np.multiply(
values1[..., selector],
values2[..., selector]
), weight[..., selector]
)
)
由于所有的循环内操作都是简单的 NumPy 操作,我认为必须有一种方法可以更快或无循环地做到这一点。
【问题讨论】:
标签: python numpy vectorization