Я бы хотел присвоить значения массива arr_2
другому массиву arr_1
.Тем не менее, я хочу сделать это на основе 2 критериев отбора.В качестве рабочего примера я определяю свои критерии выбора как таковые
import numpy as np
# An array of -1 values of shape(10,): [-1 -1 -1 -1 -1 -1 -1 -1 -1 -1]
arr_1 = np.zeros(10, dtype=int) - 1
# An array of 0-9 values of shape(10,): [0 1 2 3 4 5 6 7 8 9]
arr_2 = np.arange(10)
# Create an initial selection of values we want to change
# In this example: even indices: [ T F T F T F T F T F]
selection_a = np.arange(10) % 2 == 0
# Create a second selection based on selection_a: [F F F T T]
selection_b = arr_2[selection_a] > 5
На основе этих двух критериев выбора я хотел бы присвоить значения arr_2
, где оба условия выполняются для массива arr_1
.Т.е. эквивалентно [F F F F F F T F T F]
.
arr_1[selection_a][selection_b] = arr_2[selection_a][selection_b]
Если я проверяю обе стороны уравнения перед присваиванием, они дают ожидаемые значения:
print(arr_1[selection_a][selection_b]) # yields [-1 -1]
print(arr_2[selection_a][selection_b]) # yields [ 6, 8]
Однако само присвоениене присваивает значения, т.е. arr_1
остается без изменений.Мой вопрос: почему это так?
NB : я знаю, что в большинстве (и, может быть, даже во всех случаях) это можно обойти, создав единый критерий, однако я хочузнаю, почему использование двух отдельных критериев не работает.
Если что-то неясно, пожалуйста, дайте мне знать, и я постараюсь уточнить.
Редактировать
Я исследовал этонемного дальше, и проблема, кажется, находится в левой части уравнения, так как что-то вроде
arr_1[selection_a][selection_b] = 5
тоже не работает.