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

初始数组为空时如何将numpy数组作为行追加并计算行均值?

解决方案

方法1:动态构建二维numpy数组

如果不想用普通列表中转,可以通过初始设为None,每次追加时统一数组维度:

import numpy as np

def get_array():
    # 替换为你的实际数组生成函数
    return np.random.randint(1, 10, size=4)

arr = None
for _ in range(3):
    b = get_array()
    if arr is None:
        # 将第一个一维数组转为二维行向量
        arr = b[np.newaxis, :]
    else:
        # 垂直追加新行
        arr = np.vstack([arr, b])

# 计算每列的均值(对应你示例中的结果)
desired_result_average = np.mean(arr, axis=0)

这种方式避免了列表中转,第一次将一维数组转为(1, n)的二维结构,后续用np.vstack直接追加同维度的行,解决了维度不匹配的问题。

方法2:列表推导式+转numpy数组(高效且简洁)

你觉得用列表存储不够优雅,但实际上这是numpy官方推荐的高效写法——列表的动态扩容比numpy数组反复重新分配内存更高效,而且代码可以写得非常简洁:

import numpy as np

def get_array():
    return np.random.randint(1, 10, size=4)

# 用列表推导式收集所有数组,直接转为二维numpy数组
arr = np.array([get_array() for _ in range(3)])
desired_result_average = np.mean(arr, axis=0)

一行代码完成数组收集,既简洁又高效,完全符合"优雅"的要求。

为什么你之前的方法失败?

你尝试的np.concatenate、np.vstack等方法要求数组维度匹配,但初始的np.array([])是一维空数组,而get_array()返回的是一维数组(比如长度为4),两者维度不兼容。只要确保初始数组是二维的(哪怕只有一行),后续就能正常追加。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 04:35:19