包含True的数组元素

包含True的数组元素

import numpy as np
import re

list1= ['651ac1', '21581', '13737|14047', '22262', '12281', '12226', '61415', '61495']
regexp = '[a-zA-Z]'
selection = np.array([bool(re.search(regexp, element)) for element in list1])
if True in selection:
    #get_element_containing_true

selection看起来如下:
selection
array([ True, False, False, False, False, False, False, False, False], dtype=bool)

我想得到包含True的数组元素。我怎么得到这个?

最佳答案

您真的需要numpy吗(如果不需要,请参阅@Divakar's answer?如果这样做,您可以将list1转换为np.array并索引:

np.array(list1)[selection]

这叫做boolean array indexing。以防你感兴趣。
只是一个性能提示:如果您多次使用正则表达式:请编译它并重用已编译的正则表达式:
regexp = re.compile('[a-zA-Z]')
selection = np.array([bool(regexp.search(element)) for element in list1])

这可能会更快,更容易与其他答案结合起来。

关于python - numpy:获取比较中包含True的数组元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41980059/

10-09 17:13