У меня есть два 2D numpy
массивов,Карты Numpy в `in1d` над 2D массивом
import numpy as np
a = np.array([[ 1, 15, 16, 200, 10],
[ -1, 10, 17, 11, -1],
[ -1, -1, 20, -1, -1]])
g = np.array([[ 1, 12, 15, 100, 11],
[ 2, 13, 16, 200, 12],
[ 3, 14, 17, 300, 13],
[ 4, 17, 18, 400, 14],
[ 5, 20, 19, 500, 16]])
То, что я хочу сделать, это, для каждого столбца g
, чтобы проверить, если он содержит какой-либо элемент из соответствующего столбца a
. Для первого столбца я хочу проверить, появляется ли какое-либо из значений [1,2,3,4,5]
в [1,-1,-1]
и возвращает True
. Во-вторых, я хочу вернуть False
, потому что в [12,13,14,17,20]
элемент не появляется в [15,10,-1]
. На данный момент я делаю это с помощью понимания списка Python. Запуск
result = [np.any(np.in1d(g[:,i], a[:, i])) for i in range(5)]
вычисляет правильный результат, но становится медленным, когда a
имеет много столбцов. Есть ли более «чистый» numpy
«способ сделать то же самое? Я чувствую, что должно быть ключевое слово axis
, которое можно добавить к функции numpy.in1d
, но нет ...
К сожалению, мой ответ был неправильным. – Gioelelm
- это количество строк 'a' и' g' small, как в примере? – gg349
@GiulioGhirardo Извините за то, что вы так долго отвечали: количество строк 'a' и' g' намного меньше числа столбцов. 'g' имеет не более 10 строк, а' a' - не более 100. Число столбцов от 10 000 до 20 000 – 5xum