首页 > 解决方案 > 使用数组索引加速 numpy 数组广播

问题描述

我怎样才能加快这个for循环语句?是否可以为此目的使用快速 numpy索引方法?

np.random.seed(2021)
x = np.zeros((10, 3))
values = np.random.randn(10)
idxs = np.random.randint(0, 3, (10,))
for i, (idx, val) in enumerate(zip(idxs, values)):
    x[i, idx.item()] = val
print(x)

[[ 0.          0.          1.48860905]
 [ 0.          0.          0.67601087]
 [-0.41845137  0.          0.        ]
 [ 0.         -0.80652081  0.        ]
 [ 0.55587583  0.          0.        ]
 [ 0.          0.         -0.70550429]
 [ 0.          0.          1.13085826]
 [ 0.64500184  0.          0.        ]
 [ 0.          0.10641374  0.        ]
 [ 0.42215483  0.          0.        ]]

标签: pythonarraysnumpy

解决方案


推荐阅读