我有一个二维的numpy数组'a':
a = np.array(range(0,25)).reshape(5,5)
---
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]
[20 21 22 23 24]]
我想找到每行的最大R值并将其替换为100。我这样做很慢:
N = 2
idx = a.argsort()
for i in range(a.shape[0]):
a[i,idx[i][::-1][0:N]] = 100
print(a)
---
[[ 0 1 2 100 100]
[ 5 6 7 100 100]
[ 10 11 12 100 100]
[ 15 16 17 100 100]
[ 20 21 22 100 100]]
实际上我矩阵的形状是6000 * 6000。如何更好地做到这一点?喜欢申请吗?
You can use
argpartition
here: