You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Numpy:能否展平尺寸不等的多维数组?如何求子数组最后一维最小值?

解决不规则多维数组最后一维最小值的问题

看起来你有一个由多个二维数组组成的一维数组,每个二维数组的列数(最后一维)都是5,但行数各不相同。要找出所有子数组最后一维的最小值,这里分两种常见需求给出解法:

需求1:获取最后一维每个位置的全局最小值(结果为长度5的数组)

比如你想知道所有子数组中,第0列的最小值、第1列的最小值……第4列的最小值,可以这么做:

import numpy as np

# 遍历每个子数组,计算各自最后一维的最小值(每个子数组得到(5,)的结果)
per_subarray_col_min = [sub_arr.min(axis=1) for sub_arr in results_rmse]
# 将这些结果堆叠成二维数组,再按列取最小值
final_col_min = np.stack(per_subarray_col_min).min(axis=0)

print(final_col_min)  # 输出形状为(5,)的数组,对应每列的全局最小值

需求2:获取所有元素中最后一维的全局标量最小值

如果你只需要整个集合里最小的那个值,可以简化为:

# 方法1:先合并所有子数组为一个大的二维数组,再取全局最小值
all_data = np.vstack(results_rmse)
global_min = all_data.min()

# 方法2:直接遍历每个子数组取最小值,再取这些最小值中的最小
global_min = np.min([sub_arr.min() for sub_arr in results_rmse])

为什么不能直接用规整数组的方法?

因为你的数组是不规则的嵌套数组(每个子数组的第一维长度不同),NumPy无法直接对这类数组使用axis参数进行跨子数组的计算,所以必须先遍历处理每个子数组,再合并结果。

内容的提问来源于stack exchange,提问作者Oliver Crow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:01:37