Array2 [:, 0] содержит индексы строк array1, array2 [:, 1] содержит значение элемента array1. Я хочу получить маску той же формы, что и массив1 в векторизованном виде.
array1=
[[0 1 2]
[3 4 5]
[6 7 8]]
array2=
[[0 1]
[1 3]
[1 5]
[2 7]
[2 9]]
Код:
array1 = np.arange(9).reshape(-1,3)
array2 = np.arange(10).reshape(-1,2)
array2[:,0]=[0,1,1,2,2]
print(array1[array2[:, 0]] == array2[:, 1,None])
Результат, который я получаю:
[[False True False]
[ True False False]
[False False True]
[False True False]
[False False False]]
Результат, который я хочу получить:
[[False True False]
[ True False True]
[False True False]
Редактировать: Решение l oop выглядит следующим образом:
mask=np.zeros_like(array1)
for (y,x) in array2:
mask[y,(np.where(array1[y,:] == x))] = True