У меня есть кусок кода, где мне нужно искать индекс значения в массиве Numpy.Для этой задачи я использую numpy.where.Проблема в том, что numpy.where дает неправильный результат, то есть возвращает пустой массив, в ситуациях, когда я уверен, что искомое значение находится в массиве.Что еще хуже, я проверил, что элемент действительно находится в массиве с циклом for, и, если он найден, также ищите его с помощью numpy.where.Как ни странно, тогда он находит результат, а буквально на строчку позже - нет.
Вот как выглядит код:
# progenitors, descendants and progenitor_outputnrs are 2D-arrays that are filled from reading in files.
# outputnrs is a 1d-array.
ozi = 0
for i in range(descendants[ozi].shape[0]):
if descendants[ozi][i] > 0:
if progenitors[ozi][i] < 0:
oind = outputnrs[0] - progenitor_outputnrs[ozi][i] - 1
print "looking for prog", progenitors[ozi][i], "with outputnr", progenitor_outputnrs[ozi][i], "in", outputnrs[oind]
for p in progenitors[oind]:
if p == -progenitors[ozi][i]:
# the following line works...
print "found", p, np.where(progenitors[oind]==-progenitors[ozi][i])[0][0]
# the following line doesn't!
iind = np.where(progenitors[oind]==-progenitors[ozi][i])[0][0]
Я получаю вывод:
looking for prog -76 with outputnr 65 in 66
found 76 79
looking for prog -2781 with outputnr 65 in 66
found 2781 161
looking for prog -3797 with outputnr 63 in 64
found 3797 163
looking for prog -3046 with outputnr 65 in 66
found 3046 163
looking for prog -6488 with outputnr 65 in 66
found 6488 306
Traceback (most recent call last):
File "script.py", line 1243, in <module>
main()
File "script.py", line 974, in main
iind = np.where(progenitors[oind]==-progenitors[out][i])[0][0]
IndexError: index 0 is out of bounds for axis 0 with size 0
Я использую Python 2.7.12 и numpy 1.14.2.
У кого-нибудь есть идеи, почему это происходит?