确定以特定字符串开头的数组中的条目索引

时间:2017-08-15 13:41:45

标签: python python-2.7 numpy

如何确定以某个字符串开头的numpy数组中的元素索引(例如使用startswith)?

实施例

阵列:

test1234
testworld
hello
mynewcar
test5678

现在我需要值以test开头的索引。我期望的结果是:

[0,1,4]

2 个答案:

答案 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')])