Как объединить несколько масок numpy m1 = [0,1,1,3] m2 = [0,0,1,1] data = [10,20,30,40] Я хочу сделать что-то вроде этого: mask = (m1 == 1) & (m2 == 1) data[mask] #should return 30 Обратите внимание, что в этом примере возникает ошибка Ответ 1 Вы используете списки python вместо массивов numpy. Попробуйте это вместо этого: import numpy as np m1 = np.array([0,1,1,3]) m2 = np.array([0,0,1,1]) mask = (m1 == 1) & (m2 == 1) data[mask] # returns array([30]) В вашем примере, когда m1 был списком, m1 == 1 оценивается как False (то же самое для m2), поэтому маска была False и data[False] = data[0] = 10.
Ответ 1 Вы используете списки python вместо массивов numpy. Попробуйте это вместо этого: import numpy as np m1 = np.array([0,1,1,3]) m2 = np.array([0,0,1,1]) mask = (m1 == 1) & (m2 == 1) data[mask] # returns array([30]) В вашем примере, когда m1 был списком, m1 == 1 оценивается как False (то же самое для m2), поэтому маска была False и data[False] = data[0] = 10.