Python 沿每个轴寻找非零元素的最大指数
我有一个3d numpy阵列。我想找到阵列三个轴上非零元素元素的最大坐标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]]]) 使用完毕
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])