从字母数字数组中提取python中的行

2024-04-23 11:27:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python中有这个数组,我想把以p结尾的行提取到一个新数组中。你知道吗

array([[ 0,   6,   p],
       [ 1,   7,   m],
       [ 2,  10,   m],
       [ 3,   4,   p],
       [ 4,   1,   m],
       [ 5,  10,   p],
       [ 6,   6,   m],
       [ 7,   4,   m],
       [ 8,   6,   p],
       [ 9,   7,   p]])

Tags: 结尾数组array
3条回答

你可以用过滤器来解决这个问题。你知道吗

data = [
    [ 0,   6,   "p"],
    [ 1,   7,   "m"],
    [ 2,  10,   "m"],
    [ 3,   4,   "p"],
    [ 4,   1,   "m"],
    [ 5,  10,   "p"],
    [ 6,   6,   "m"],
    [ 7,   4,   "m"],
    [ 8,   6,   "p"],
    [ 9,   7,   "p"]
]

new_data = filter(lambda l: l[2] == "p", data)

上面的结构假设您处理的是一个列表列表(数组数组),但是元组和字典也应该如此。你知道吗

以下是对过滤器函数的引用: https://docs.python.org/2/library/functions.html#filter

这在python中很容易实现。你知道吗

你可以这样做:

p = array[SOME_RANDOM_CELL];
print p[0]

简单的方法是使用numpy布尔索引,如下所示

a = numpy.array(a) # ensure its a numpy array
print a[a[:,-1]=="p"]

把它分解

mask = a[:,-1]=="p" #gives an array of True/False that is the same as the array, based on if last char is "p"
a[mask]  #indexes into the original array returning only the rows that end with "p"

相关问题 更多 >