Значение истинности массива с более чем одним элементом неоднозначно. Используйте a.any() или a.all() - библиотека Numpy

Я видел эту же тему в другом месте, но не нашел реального ответа на свой вопрос. У меня есть массив numpy, и мне нужно найти индекс числа.

a=np.argsort(cosine_similarity(tfidf_matrix[11:12], tfidf_matrix)) #numbers are from 0 to 11

b=np.equal(a,10)

# b values are [[False False False False False False False False  True False False False]]

Как мне заставить его возвращать индекс 8? (Индекс истинного значения в массиве)


person Alexandru Petrea    schedule 05.11.2019    source источник
comment
Решение находится в сообщении об ошибке, которое вы указали в заголовке своего вопроса. Вы хотите проверить, равен ли какой-либо элемент 10, или вы хотите проверить, равен ли он всем 10?   -  person kaya3    schedule 06.11.2019
comment
indices = np.where(a == 10)[0] даст вам массив индексов, где a равно 10. Просто погуглите numpy.where и прочитайте документы.   -  person Buckeye14Guy    schedule 06.11.2019
comment
Какое выражение вызвало ошибку?   -  person hpaulj    schedule 06.11.2019


Ответы (1)


Вы ищете numpy.where

b = np.where(a==10)

Здесь b будет массивом, содержащим индексы элементов, соответствующих вашему условию. Вы можете выбрать первый элемент (b[0]), если вас интересует только первое вхождение элемента.

В документации по numpy.equal говорится, что:

Вернуть (x1 == x2) поэлементно.

И это именно то, что вы получили, массив, содержащий поэлементное сравнение массива a и значения 10.

person razdi    schedule 05.11.2019