Это похоже на простой вопрос, но я не смог найти хороший ответ.
Я ищу pythonic способ проверить, содержит ли массив 2d numpy определенную строку. Например:
myarray = numpy.array([[0,1],
[2,3],
[4,5]])
myrow1 = numpy.array([2,3])
myrow2 = numpy.array([2,5])
myrow3 = numpy.array([0,3])
myrow4 = numpy.array([6,7])
Учитывая myarray, я хочу написать функцию, которая возвращает True, если я тестирую myrow1, и False, если я тестирую myrow2, myrow3 и myrow4.
Я попробовал ключевое слово "in", и он не дал мне ожидаемых результатов:
>>> myrow1 in myarray
True
>>> myrow2 in myarray
True
>>> myrow3 in myarray
True
>>> myrow4 in myarray
False
Кажется, проверяет только то, что один или несколько элементов одинаковы, а не все элементы одинаковы. Может кто-нибудь объяснить, почему это происходит?
Я могу сделать этот тестовый элемент по элементу, примерно так:
def test_for_row(array,row):
numpy.any(numpy.logical_and(array[:,0]==row[0],array[:,1]==row[1]))
Но это не очень pythonic, и становится проблематичным, если строки имеют много элементов. Должно быть более элегантное решение. Любая помощь приветствуется!