如何确定以某个字符串开头的numpy数组中的元素索引(例如使用startswith
)?
实施例
阵列:
test1234
testworld
hello
mynewcar
test5678
现在我需要值以test
开头的索引。我期望的结果是:
[0,1,4]
答案 0 :(得分:3)
您可以使用np.char.startswith
获取匹配的掩码,然后使用np.flatnonzero
来获取匹配的索引 -
np.flatnonzero(np.char.startswith(a, 'test'))
示例运行 -
In [61]: a = np.array(['test1234', 'testworld','hello','mynewcar','test5678'])
In [62]: np.char.startswith(a, 'test')
Out[62]: array([ True, True, False, False, True], dtype=bool)
In [63]: np.flatnonzero(np.char.startswith(a, 'test'))
Out[63]: array([0, 1, 4])
答案 1 :(得分:1)
@Divakar's answer是可行的方法,但也可以使用列表理解:
a = np.array(['test1234', 'testworld', 'hello', 'mynewcar', 'test5678'])
[i for i, si in enumerate(a) if si.startswith('test')]
将给出
[0, 1, 4]
此列表还可以转换回numpy数组:
np.array([i for i, si in enumerate(a) if si.startswith('test')])