Python 沿每个轴寻找非零元素的最大指数

Python 沿每个轴寻找非零元素的最大指数,python,arrays,numpy,Python,Arrays,Numpy,我有一个3d numpy阵列。我想找到阵列三个轴上非零元素元素的最大坐标x、y和z。我该怎么做 对于下面的例子,x=1,y=2,z=1 array([[[1, 1, 0], [1, 1, 0], [0, 0, 0]], [[0, 0, 0], [1, 0, 0], [1, 0, 0]], [[0, 0, 0], [0, 0, 0], [0, 0, 0]]]) 使用完毕

我有一个3d numpy阵列。我想找到阵列三个轴上非零元素元素的最大坐标
x
y
z
。我该怎么做

对于下面的例子,x=1,y=2,z=1

array([[[1, 1, 0],
        [1, 1, 0],
        [0, 0, 0]],

       [[0, 0, 0],
        [1, 0, 0],
        [1, 0, 0]],

       [[0, 0, 0],
        [0, 0, 0],
        [0, 0, 0]]])
使用完毕


使用获取非零元素的索引,并将其堆叠在列中,最后沿列找到
max
。实现看起来像这样-

np.column_stack((np.nonzero(A))).max(0)
看起来有一个内置函数,用于获取堆叠在
2D
数组中的所有非零元素的索引。因此,您可以简单地执行以下操作-

np.argwhere(A).max(0)
样本运行-

In [50]: A
Out[50]: 
array([[[1, 1, 0],
        [1, 1, 0],
        [0, 0, 0]],

       [[0, 0, 0],
        [1, 0, 0],
        [1, 0, 0]],

       [[0, 0, 0],
        [0, 0, 0],
        [0, 0, 0]]])

In [51]: np.column_stack((np.nonzero(A))).max(0)
Out[51]: array([1, 2, 1])

In [52]: np.argwhere(A).max(0)
Out[52]: array([1, 2, 1])

arg其中
只是
np.nonzero(A).T
,非零索引被重新排列。
In [50]: A
Out[50]: 
array([[[1, 1, 0],
        [1, 1, 0],
        [0, 0, 0]],

       [[0, 0, 0],
        [1, 0, 0],
        [1, 0, 0]],

       [[0, 0, 0],
        [0, 0, 0],
        [0, 0, 0]]])

In [51]: np.column_stack((np.nonzero(A))).max(0)
Out[51]: array([1, 2, 1])

In [52]: np.argwhere(A).max(0)
Out[52]: array([1, 2, 1])