NumPy:如何根据元素的某些条件过滤出多维数组的第一个轴

NumPy:如何根据元素的某些条件过滤出多维数组的第一个轴,numpy,filtering,Numpy,Filtering,考虑以下数据列lm- In [135]: lm Out[135]: array([[[15, 7], [ 2, 3], [ 0, 4]], [[ 8, 12], [ 6, 5], [17, 10]], [[16, 13], [30, 1], [14, 9]]]) In [136]: lm.shape Out[136]: (3, 3, 2) 我想筛选出至少

考虑以下数据列
lm
-

In [135]: lm
Out[135]:
array([[[15,  7],
        [ 2,  3],
        [ 0,  4]],

       [[ 8, 12],
        [ 6,  5],
        [17, 10]],

       [[16, 13],
        [30,  1],
        [14,  9]]])

In [136]: lm.shape
Out[136]: (3, 3, 2)
我想筛选出至少一个元素大于20的第一个轴(
lm[0]
lm[1]
,…)的成员。由于
lm[2,1,0]
是唯一满足此条件的元素,因此我希望得到以下结果-

array([[[15,  7],
        [ 2,  3],
        [ 0,  4]],

       [[ 8, 12],
        [ 6,  5],
        [17, 10]]]
i、 e
lm[2]
至少有一个元素>20,因此从结果集中筛选出来。如何实现这一点?

使用和使用
轴的两种方法-

In [14]: lm[(lm<=20).all(axis=(1,2))]
Out[14]: 
array([[[15,  7],
        [ 2,  3],
        [ 0,  4]],

       [[ 8, 12],
        [ 6,  5],
        [17, 10]]])

In [15]: lm[~(lm>20).any(axis=(1,2))]
Out[15]: 
array([[[15,  7],
        [ 2,  3],
        [ 0,  4]],

       [[ 8, 12],
        [ 6,  5],
        [17, 10]]])
[14]中的
lm[(lm20).any(轴=(1,2))]
出[15]:
数组([[15,7],
[ 2,  3],
[ 0,  4]],
[[ 8, 12],
[ 6,  5],
[17, 10]]])
要使ndarray沿着最后两个轴工作,请改用
轴=(-2,-1)

使用和使用
轴的两种方法-

In [14]: lm[(lm<=20).all(axis=(1,2))]
Out[14]: 
array([[[15,  7],
        [ 2,  3],
        [ 0,  4]],

       [[ 8, 12],
        [ 6,  5],
        [17, 10]]])

In [15]: lm[~(lm>20).any(axis=(1,2))]
Out[15]: 
array([[[15,  7],
        [ 2,  3],
        [ 0,  4]],

       [[ 8, 12],
        [ 6,  5],
        [17, 10]]])
[14]中的
lm[(lm20).any(轴=(1,2))]
出[15]:
数组([[15,7],
[ 2,  3],
[ 0,  4]],
[[ 8, 12],
[ 6,  5],
[17, 10]]])

要使Ndarray沿着最后两个轴工作,请使用
axis=(-2,-1)

谢谢,我没有意识到axis参数可以使用tupleYou可以使用的tupleYou可以使用
tuple(range(1,lm.ndim))
谢谢,我没有意识到axis参数可以使用tupleYou可以使用的tupleYou
tuple(range(1,lm.ndim))