我有一个大约为 (x,y,z) = (100, 150, 25) 的 numpy 数组,我想找到每个 x,y 数组元素的最大值(即比较 [1][ 1]从所有子数组中找到最大值)。然后我想将这些值保存到形状 (x, y) = (100, 150) 的单独二维数组中。我已包含以下代码作为示例。谢谢!
import numpy as np
a = np.array([[[6, 7], [3, 4], [2, 7]], [[1, 2], [5, 8], [3, 5]]])
print(a)
#some function that finds the maximum of each element and saves it to a new 2d array
desired_output = np.array([[6,7], [5, 8], [3, 7]])
print(desired_output)
最佳答案
您的问题的解决方案(可能):
a.max(axis=0)
由于我不确定您的数组的格式究竟如何,您可能正在寻找 axis=1 或 axis=2。但根据您提供的示例,axis=0 应该是正确的。
一些注意事项: 因此,数组的技术形状可能是 (25, 100, 150)。使用不同的示例(其中所有维度都有不同的数字,这样我们就不会混淆):
arr = [[[x, x, x],
[x, x, x],
[x, x, x],
[x, x, x]],
[[x, x, x],
[x, x, x],
[x, x, x],
[x, x, x]]]
arr 是一个 3d 矩阵,尺寸为 2x4x3
为什么这有效: Numpy 的操作,当您指定一个轴时,折叠该轴并创建一个新形状。以下是一些示例。
沿轴 0 折叠,我们得到一个 1x4x3 --> 4x3 形状:
[[x, x, x],
[x, x, x],
[x, x, x],
[x, x, x]]
沿轴 1 折叠,我们得到 2x1x3 --> 2x3 形状:
[[x, x, x],
[x, x, x]]
沿轴 2 折叠,我们得到 2x4x1 --> 2x4 形状:
[[x, x, x, x],
[x, x, x, x]]
关于python - 找到3D数组中每个元素的最大值并将它们保存为python中的新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68642264/