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、 elm[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可以使用的tupleYoutuple(range(1,lm.ndim))