将此实现转换为更有效的numpy
用法基本上对于每个实例D [i]< = num,我想使用该索引将numpy x [i]添加到nx并将numpy y [i]添加到新的numpy数组nx,ny中。
row, = D.shape
for i in range(row):
if D[i] <= num:
nx.append(x[i])
ny.append(y[i])
答案 0 :(得分:4)
您可以使用masking
-
mask = D<=num
nx, ny = x[mask], y[mask]
答案 1 :(得分:2)
您可以使用np.where
w = np.where(D <= num)[0]
nx, ny = x[w], y[w]
演示
D = np.arange(10)
x = np.arange(10)
y = np.arange(10)[::-1]
num = 4
w = np.where(D <= num)[0]
nx, ny = x[w], y[w]
print(nx, ny)
[0 1 2 3 4] [9 8 7 6 5]
您也可以使用np.flatnonzero
来达到同样的效果。
D = np.arange(10)
x = np.arange(10)
y = np.arange(10)[::-1]
num = 4
w = np.flatnonzero(D <= num)
nx, ny = x[w], y[w]
print(nx, ny)
[0 1 2 3 4] [9 8 7 6 5]
天真的时间测试
有大量数据
k = 100000
D = np.arange(k)
x = np.arange(k)
y = np.arange(k)[::-1]
num = k // 2