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

如何将多个numpy矩阵动态追加合并为形状为(3,2,4)的多维数组

解决方案

numpy数组为固定大小的内存结构,频繁拼接会触发全量内存拷贝,性能较低,可根据使用场景选择以下实现方式:

方式1:直接使用np.concatenate实现动态追加

适用于追加操作较少的场景,示例代码如下:

import numpy as np

# 初始三个矩阵
testMat1 = np.array([[1,2,3,4],[4,5,6,7]])
testMat2 = np.array([[7,8,9,10],[10,11,12,13]])
testMat3 = np.array([[2,4,6,8],[3,5,7,9]])

# 初始合并为形状(3, 2, 4)的数组
combined_arr = np.stack([testMat1, testMat2, testMat3], axis=0)

# 追加新的形状为(2,4)的矩阵
new_mat = np.array([[1,3,5,7],[2,4,6,8]])
# 先给新矩阵新增第0维度,变为(1,2,4)后在第0维拼接
combined_arr = np.concatenate([combined_arr, new_mat[np.newaxis, :]], axis=0)

# 验证形状
print(combined_arr.shape) # 输出 (4, 2, 4)

方式2:列表缓存+一次性转换(更推荐)

如果需要频繁追加矩阵,优先用普通Python列表缓存所有矩阵,全部追加完成后一次性转换为numpy数组,避免多次内存拷贝,性能提升明显:

import numpy as np

testMat1 = np.array([[1,2,3,4],[4,5,6,7]])
testMat2 = np.array([[7,8,9,10],[10,11,12,13]])
testMat3 = np.array([[2,4,6,8],[3,5,7,9]])

# 用列表存储所有矩阵
mat_cache = [testMat1, testMat2, testMat3]

# 后续追加新矩阵直接操作列表
new_mat = np.array([[1,3,5,7],[2,4,6,8]])
mat_cache.append(new_mat)

# 全部数据准备完成后一次性转换为目标数组
combined_arr = np.array(mat_cache)
print(combined_arr.shape) # 输出 (4, 2, 4)

注意:不推荐使用np.append,它默认会将输入数组扁平化,即使指定axis参数,本质也是对np.concatenate的封装,灵活性和可读性都不如直接使用np.concatenate。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 04:24:01