У меня есть пустой массив:
arr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])
>> arr
[[ 1 2 3 4 5]
[ 6 7 8 9 10]]
Я хочу взять часть массива на основе индексов (не срезов):
ix = np.ix_([0, 1], [0, 2])
>> arr[ix]
[[1 3]
[6 8]]
И я хочу изменить этиэлементы в исходном массиве, которые будут работать, если я сделаю это:
arr[ix] = 0
>> arr
[[ 0 2 0 4 5]
[ 0 7 0 9 10]]
Но я хочу изменить их, только если они соответствуют определенному условию, например, если они меньше 5
.Я пытаюсь это:
subarr = arr[ix]
subarr[subarr < 5] = 0
Но это не меняет оригинал.
>> arr
[[ 1 2 3 4 5]
[ 6 7 8 9 10]]
>> subarr
[[0 0]
[6 8]]
Я не уверен, почему это не работает, так как оба обращаются к массиву по индексамс np.ix_
и использованием маски subarr < 5
должен возвращать представление массива, а не копию.