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

如何用循环按指定大小合并Numpy中的多个二维数组?

解决方案

要实现自定义合并大小的循环拼接,核心思路是按指定批次大小拆分数组列表,逐批拼接。这样你可以随时调整batch_size参数来改变每一组合并的数组数量,不用手动写多个np.concatenate语句。

下面是具体实现代码:

import numpy as np

# 你的数组定义(修正了原代码中`01`的语法问题)
a1 = np.array([[0, 12, 3], [5, 8, 9]])
a2 = np.array([[2, 13, 3], [5, 9, 9]])
a3 = np.array([[0, 24, 4], [6, 10, 9]])
a4 = np.array([[1, 55, 6], [4, 5, 19]])
a5 = np.array([[1, 56, 6], [4, 1, 9]])
a6 = np.array([[1, 57, 6], [4, 20, 9]])
a7 = np.array([[1, 58, 6], [4, 30, 9]])
a8 = np.array([[1, 59, 6], [4, 40, 9]])
a9 = np.array([[1, 51, 6], [4, 60, 9]])
a10 = np.array([[1, 34, 6], [4, 60, 9]])
a11 = np.array([[1, 51, 62], [4, 30, 9]])
a12 = np.array([[1, 1, 6], [4, 7, 9]])

M = [a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12]

# 自定义合并批次大小,这里可以改成你需要的数值(比如2、4等)
batch_size = 3

# 循环分批拼接
X = []
for start_idx in range(0, len(M), batch_size):
    # 截取当前批次的数组
    current_batch = M[start_idx : start_idx + batch_size]
    # 沿轴1拼接数组
    merged_array = np.concatenate(current_batch, axis=1)
    X.append(merged_array)

# 输出结果验证
for idx, arr in enumerate(X):
    print(f"合并后的数组X[{idx}]:\n{arr}\n")

关键说明

  1. 批次拆分逻辑:range(0, len(M), batch_size)会生成从0开始、步长为batch_size的索引序列,比如当len(M)=12、batch_size=3时,索引为0,3,6,9,正好对应4组各3个数组。
  2. 通用兼容性:如果数组总数不是batch_size的整数倍(比如13个数组、batch_size=3),最后一批会自动取剩余的所有数组(比如1个),np.concatenate处理单个数组时会直接返回原数组,不会报错。
  3. 简化写法:如果喜欢更简洁的代码,可以用列表推导式一行完成:
batch_size = 3
X = [np.concatenate(M[i:i+batch_size], axis=1) for i in range(0, len(M), batch_size)]

这样调整batch_size的值就能轻松改变合并的数组数量,比如改成batch_size=4,就会每4个数组拼接成一组,最终得到3个合并后的数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:20:42