【发布时间】:2016-05-03 04:29:27
【问题描述】:
我有一个这样的数组myA:
array([ 7, 4, 5, 8, 3, 10])
如果我想用 0 替换所有大于值 val 的值,我可以这样做:
myA[myA > val] = 0
这给了我想要的输出(对于val = 5):
array([0, 4, 5, 0, 3, 0])
但是,我的目标不是替换所有,而是仅替换此数组中大于值 val 的第一个 n 元素。
所以,如果n = 2 我想要的结果是这样的(10 是第三个元素,因此不应被替换):
array([ 0, 4, 5, 0, 3, 10])
一个简单的实现是:
import numpy as np
myA = np.array([7, 4, 5, 8, 3, 10])
n = 2
val = 5
# track the number of replacements
repl = 0
for ind, vali in enumerate(myA):
if vali > val:
myA[ind] = 0
repl += 1
if repl == n:
break
这行得通,但也许有人可以用一种聪明的方式来掩盖!?
【问题讨论】:
标签: python arrays performance numpy