Я хочу изменить знак n элементов в массиве numpy, который лежит ближе всего к определенному значению, но не меньше. То есть элементы должны быть равны или превышать значение. Существуют ли быстрые методы Numpy, которые могут сделать это эффективно с большими массивами?
Код, который у меня сейчас есть, принимает n значений, которые больше или равны, но не самые близкие, что «хорошо», но не идеально для моих результатов.
def update(arr, n, value):
updated = 0
i = 0
while updated < n:
if arr[i] >= value: # just a random value above "value"
arr[i] = -arr[i]
updated +=1
i += 1
arr = np.array([9, 8, 2, -4, 3, 4])
n = 3
value = 2
update(arr, n, value)
дает мне
arr = np.array([-9, -8, -2, -4, 3, 4])
когда я вместо этого хочу
arr = np.array([9, 8, -2, -4, -3, -4])