python - 找到3D数组中每个元素的最大值并将它们保存为python中的新数组

标签 python arrays numpy

我有一个大约为 (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/

相关文章:

python - 递归错误 : maximum recursion depth exceeded in comparison

python - 密码破解程序

ruby - 匹配数组中的模式

javascript - 在 javascript 中为直方图合并数组

python - 将元素添加到数组并将其分配给同一个对象

python - 我应该如何序列化包含 pygame 表面的游戏对象?

python迭代json结构和键值未知的json文件

c - 数组大小与输入的不同 - C

python - 如何在 pandas Dataframe 中查找 numpy 数组列的 boolean 值?

python - 如何使用 Python/C API 将 numpy.ndarray 转换为 cv::Mat?