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

无需循环计算含不同长度NumPy子数组的数组中各子数组均值

计算不等长二维数组的子数组均值(无显式循环)

你的array_combined因子数组长度不一致,被numpy创建为dtype=object的数组,直接调用np.mean无法按子数组计算均值,以下是两种无需手动写循环的实现方式:

方法1:利用np.vectorize

np.vectorize可将单元素函数转换为能作用于数组每个元素的向量化函数,这里用它包装np.mean来处理每个子数组:

import numpy as np

array1 = np.array([1,2,3,4,5])
array2 = np.array([1,2,3])
array3 = np.array([1,2,3,4,5])
list_combined = [array1, array2, array3]
array_combined = np.array(list_combined)

# 生成向量化均值函数
vec_mean = np.vectorize(lambda arr: np.mean(arr))
subarray_means = vec_mean(array_combined)
print(subarray_means)  # 输出:[3. 2. 3.]

方法2:利用np.frompyfunc

np.frompyfunc可以创建自定义通用函数,实现无显式循环的计算:

# 创建计算均值的通用函数
mean_ufunc = np.frompyfunc(lambda arr: np.mean(arr), 1, 1)
# 转换为float类型(frompyfunc默认返回object数组)
subarray_means = mean_ufunc(array_combined).astype(float)
print(subarray_means)  # 输出:[3. 2. 3.]

注意

np.vectorize和np.frompyfunc底层仍会遍历数组元素,但它们不需要你手动编写for/while循环,满足你的需求。

内容的提问来源于stack exchange,提问作者Syed Muhammad Zain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 21:45:38