过滤多维数组

2024-05-19 23:02:48 发布

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

我有一个数组(列表),它是NxK。但是,我想“过滤”是在基于第4列和第6列的值输入一些约束之后。这是我目前掌握的密码。在

minmag = 5
maxmag = 7

mindist = 25
maxdist = 64

filter = np.zeros((1, 7), dtype='object')
add = np.zeros((1, 7), dtype='object')
k = 0

for i in range(0,len(lists)):
    if lists[i, 4]>= minmag and lists [i, 4] <= maxmag and lists [i, 6]>=mindist and  lists [i, 6]<= maxdist:
        if k == 0:
            for x in range(0,16):
                filter[0, x] = lists[i, x]
            k = 1
        else:
            for x in range(0, 16):
                add[0, x] = lists[i, x]
            filter = np.append(filter, add, axis=0)

它很管用,但不是那么整洁。只是想知道有没有更好的解决办法。在


Tags: andinaddforobjectnpzerosrange
1条回答
网友
1楼 · 发布于 2024-05-19 23:02:48

简化最重复的部分:

if k==0:
    for x in xrange(1,8):
        lists[i,x] = filter[0,x]
    k = 1
else:
    for x in xrange(1,8):
        lists[i,x] = add[0,x]
    filter = np.append(filter, add, axis=0)

您还可以将嵌套的if组合成一个单独的ifs,其中4个条件与^{相结合

我还相信(不知道lists是如何定义的,我不确定)可以用

^{pr2}$

然后用row[x]代替{}

相关问题 更多 >