如何在Python中对不同形状的数组进行按列和按行合并?
三维数组合并方案
假设你使用的是NumPy数组,以下是针对需求的具体实现:
按列合并(扩展列维度)
你的两个数组前两个维度(160,1400)完全一致,第三个维度分别为1200和3。按列合并指在**列维度(第三个轴,axis=2)**拼接,合并后列数变为1200+3=1203,最终数组形状为(160,1400,1203)。
代码示例:
import numpy as np # 示例数组 arr1 = np.random.rand(160, 1400, 1200) arr2 = np.random.rand(160, 1400, 3) # 按列合并 merged_col = np.concatenate([arr1, arr2], axis=2) print(merged_col.shape) # 输出 (160, 1400, 1203)
按行合并(扩展行维度)
若要按行合并(扩展行维度,第二个轴axis=1),需先让两个数组的列维度一致。由于arr2的列维度是3,arr1是1200,可通过重复arr2的列元素匹配维度(假设将3列扩展到1200列),之后在**行维度(axis=1)**拼接,最终数组形状为(160, 2800, 1200)。
代码示例:
# 将arr2的列维度扩展到1200(重复400次,1200/3=400) arr2_expanded = np.repeat(arr2, 400, axis=2) # 按行合并 merged_row = np.concatenate([arr1, arr2_expanded], axis=1) print(merged_row.shape) # 输出 (160, 2800, 1200)
如果你的“按行合并”指增加样本数(第一个轴axis=0),同样需先扩展arr2的列维度,合并后形状为(320,1400,1200):
merged_samples = np.concatenate([arr1, arr2_expanded], axis=0) print(merged_samples.shape) # 输出 (320, 1400, 1200)
内容的提问来源于stack exchange,提问作者Damien Rice
相关产品推荐
相关产品推荐

