Python 滤波器多维阵列

Python 滤波器多维阵列,python,arrays,filter,Python,Arrays,Filter,我有一个数组(列表),它是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]>

我有一个数组(列表),它是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)
minmag=5
maxmag=7
正念派=25
maxdist=64
filter=np.zero((1,7),dtype='object')
add=np.zeros((1,7),dtype='object')
k=0
对于范围(0,len(列表))中的i:

如果列表[i,4]>=minmag和列表[i,4]=Mindsist和列表[i,6]简化最重复的部分:

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
s与
s组合成一个单独的
if
s

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

for row in lists:

然后用
行[x]
代替
列表[i,x]

谢谢。做了所有这些。看起来更整洁。对于任何更整洁的东西,我都非常高兴:)仅供参考:您的编辑更改了代码的行为。谢谢。我认为它以正确的方式改变了它。在编辑之前我得到了零。