使用索引列表对numpy数组的元素执行操作

我有numpy数组和两个python索引列表,它们的位置将数组元素增加一。numpy是否有一些方法可以向量化此操作而不使用for循环?


我目前的执行缓慢:


a = np.zeros([4,5])

xs = [1,1,1,3]

ys = [2,2,3,0]


for x,y in zip(xs,ys): # how to do it in numpy way (efficiently)?

    a[x,y] += 1


print(a)

输出:


[[0. 0. 0. 0. 0.]

 [0. 0. 2. 1. 0.]

 [0. 0. 0. 0. 0.]

 [1. 0. 0. 0. 0.]]


潇湘沐
浏览 196回答 2
2回答

三国纷争

>>> a = np.zeros([4,5])>>> xs = [1, 1, 1, 3]>>> ys = [2, 2, 3, 0]>>> a[[xs,ys]] += 1>>> aarray([[ 0.,  0.,  0.,  0.,  0.],       [ 0.,  0.,  1.,  1.,  0.],       [ 0.,  0.,  0.,  0.,  0.],       [ 1.,  0.,  0.,  0.,  0.]])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python