Python 确定数组中以特定字符串开头的项的索引

Python 确定数组中以特定字符串开头的项的索引,python,python-2.7,numpy,Python,Python 2.7,Numpy,如何确定以特定字符串开头的numpy数组中元素的索引,例如使用startswith 范例 数组: test1234 testworld hello mynewcar test5678 现在我需要以test开始的索引。我期望的结果是: [0,1,4] 您可以使用获取匹配掩码,然后使用np.flatnonzero获取匹配索引- np.flatnonzero(np.char.startswith(a, 'test')) 样本运行- In [61]: a = np.array(['test1234

如何确定以特定字符串开头的numpy数组中元素的索引,例如使用startswith

范例

数组:

test1234
testworld
hello
mynewcar
test5678
现在我需要以test开始的索引。我期望的结果是:

[0,1,4]
您可以使用获取匹配掩码,然后使用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])
是一种方法,但作为替代方法,您也可以使用列表理解:

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