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

如何在Python中按行和列合并不同维度的两个数组?

在Python中合并不同维度的数组

在Python中处理这类数组合并,通常使用numpy库来实现,核心步骤是先扩展低维数组的维度,使其与高维数组的维度匹配,再进行合并。以下是针对你需求的两种合并方式:

1. 按列方向合并(扩展第三个维度)

这里的列方向对应三维数组的第三个轴(axis=2)(即原数组中1200的维度)。需要先把二维数组arr2扩展为(150, 1400, 1)的三维数组,再和arr1在列维度上合并:

import numpy as np

# 创建示例数组(替换为你的实际数组)
arr1 = np.random.rand(150, 1400, 1200)
arr2 = np.random.rand(150, 1400)

# 扩展arr2的维度:从(150,1400)转为(150,1400,1)
arr2_expanded = arr2[..., np.newaxis]  # 等价于 arr2.reshape(150, 1400, 1)

# 执行列方向合并
merged_col = np.concatenate([arr1, arr2_expanded], axis=2)
print(merged_col.shape)  # 输出: (150, 1400, 1201)

2. 按行方向合并(扩展第二个维度)

这里的行方向对应三维数组的第二个轴(axis=1)(即原数组中1400的维度)。由于arr1在第三个轴有1200列,需要先将arr2的每个值重复1200次,扩展为(150, 1400, 1200)的三维数组,再和arr1在行维度上合并:

# 扩展arr2的维度:从(150,1400)转为(150,1400,1200)
arr2_expanded = np.repeat(arr2[..., np.newaxis], repeats=1200, axis=2)

# 执行行方向合并
merged_row = np.concatenate([arr1, arr2_expanded], axis=1)
print(merged_row.shape)  # 输出: (150, 2800, 1200)

关键注意事项

  • 若你所说的“行/列方向”对应其他轴(比如第一个轴axis=0,即150的维度),只需调整concatenate的axis参数,并确保arr2的维度与arr1对应轴的维度匹配即可。
  • 虽然numpy.hstack/numpy.vstack等便捷函数也能实现堆叠,但对于三维数组,直接使用numpy.concatenate并指定轴参数会更直观,避免混淆。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 19:01:18