np.where不返回字符串列表中的任何索引

时间:2018-10-17 20:14:13

标签: python numpy

我正在尝试使用np.where访问字符串列表中的字符串的索引号。这是用于设置自动仿真以跟踪当前和已完成的方案。我无法获得以下脚本的相似版本来产生正确的结果。当我期望返回索引1时,将返回一个空数组。

 import numpy as np

 scenariolist=['scenario.npz', 'scenario1.npz', 'scenario2.npz']
 currscenario='scenario1.npz'

 print(np.where(scenariolist==currscenario))

返回:

 (array([], dtype=int64),)

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

在这种情况下,将np.where()的两个参数转换为numpy数组,如下所示,将得到预期的结果:

scenariolist=np.array(['scenario.npz', 'scenario1.npz', 'scenario2.npz'])
currscenario=np.array(['scenario1.npz'])

print(np.where(scenariolist==currscenario)) #(array([1]),)

尽管可以在不使用numpy数组的情况下完成,但可以使用index()用于python列表的方法:

scenariolist.index(currscenario) # 1 

但是,如果该值不在列表中,则它是处理ValueError异常所必需的。

try:
    scenariolist.index(currscenario) # 1 
except ValueError:
    print('currscenario is not in the list')