繁体   English   中英

沿Axis = 0找到最大3D np.array

[英]Find Maximum of 3D np.array along Axis = 0

我有一个3D numpy数组,如下所示:

 X = [[[10  1]   [ 2 10]   [-5  3]]

  [[-1 10]   [ 0  2]   [ 3 10]]

  [[ 0  3]   [10  3]   [ 1  2]]

  [[ 0  2]   [ 0  0]   [10  0]]]

首先,我希望轴X的最大值为X.max(轴= 0):

这给了我:

 [[10 10]  [10 10]  [10 10]]

下一步是我的问题; 我想调用每个10的位置并从另一个3D数组创建一个新的2D数组,该数组具有与X相同的dimeonsion。

例如,具有相同尺寸的数组看起来像这样:

 Y = [[[11  2]   [ 3 11]   [-4  100]]

  [[ 0 11]   [ 100  3]   [ 4 11]]

  [[ 1  4]   [11  100]   [ 2  3]]

  [[ 100  3]   [ 1  1]   [11  1]]]

我想在X中找到最大值的位置,并从Y中的数字和位置创建一个2D数组。

这种情况下的答案应该是:

 [[11 11]  [11 11]  [11 11]]

提前谢谢你的帮助 :)

你可以使用numpy.argmaxnumpy.indices来做到这numpy.indices

import numpy as np

X = np.array([[[10, 1],[ 2,10],[-5, 3]],
              [[-1,10],[ 0, 2],[ 3,10]],
              [[ 0, 3],[10, 3],[ 1, 2]],
              [[ 0, 2],[ 0, 0],[10, 0]]])

Y = np.array([[[11, 2],[ 3,11],[-4, 100]],
              [[ 0,11],[ 100, 3],[ 4,11]],
              [[ 1, 4],[11, 100],[ 2, 3]],
              [[ 100, 3],[ 1, 1],[11, 1]]])

ind = X.argmax(axis=0)
a1,a2=np.indices(ind.shape)

print X[ind,a1,a2]
# [[10 10]
#  [10 10]
#  [10 10]]

print Y[ind,a1,a2]
# [[11 11]
#  [11 11]
#  [11 11]]

这里的答案为此提供了灵感

你可以试试

Y[X==X.max(axis=0)].reshape(X.max(axis=0).shape)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM