numpy.where产生不一致的结果

时间:2018-05-25 20:53:58

标签: python arrays numpy

我有一段代码,我需要在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。

有谁知道为什么会这样?

0 个答案:

没有答案