我有一个数组(列表),它是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)
它可以工作,但是并不是那么整洁。只是想知道是否有人有更好的解决方案。
最佳答案
简化最重复的部分:
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
与4个条件和and
组合为一个。我也相信(不确定如何定义
lists
,我不确定)可以将外部循环替换为for row in lists:
然后使用
row[x]
代替lists[i,x]
关于python - 过滤多维数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39606158/