Проверьте, находится ли значение в списке в соответствующей строке в массиве numpy - PullRequest
0 голосов
/ 28 июня 2018

b =np.ndarray(shape=(5,5), dtype=int, order='F')
Out[142]: 
array([[       1,    65536,        0,        0,        0],
       [       0,        0,        1,    65536,        0],
       [16777216,        0,        0,        0,        1],
       [       0,      256, 16777216,        0,        0],
       [       0,        0,        0,      256, 16777216]])

и у меня есть список, например:

a = [1,23,4,5,20,0...]

Я хотел бы проверить для каждого индекса, находится ли значение в a в соответствующей строке в b, как np.isin(a[0], b[0]), и получить логический вектор для всех строк (если a[i] в b[i]).

Длина a равна длине b (количество строк).

1 Ответ

0 голосов
/ 28 июня 2018

Вот один из способов использования np.ndarray.any. Просто постарайтесь выровнять размеры, чтобы разрешить трансляцию.

np.random.seed(0)

b = np.random.randint(0, 10, (5, 5))
a = np.random.randint(0, 10, 5)

print(a, b, sep='\n'*2)

[3 0 3 5 0]

[[5 0 3 3 7]
 [9 3 5 2 4]
 [7 6 8 8 1]
 [6 7 7 8 1]
 [5 9 8 9 4]]

c = (a[:, None] == b).any(1)

print(c)

array([ True, False, False, False, False], dtype=bool)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...