[英]How to pad the i, j axes of a 3D np.array without padding its k axis?
[英]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.argmax
和numpy.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.