如何合并2D和3D NumPy数组以得到形状为(65341,17,82)的目标数组
NumPy数组拼接解决方案
你之前拼接报错的核心原因是两个数组维度不匹配:A为3维数组(形状(65341, 2, 82)),B为2维数组(形状(15, 82)),未调整形状时无法直接拼接,按以下步骤操作即可得到目标数组:
操作逻辑
目标数组C的第1维长度为17,恰好是A的第1维长度(2)加B的第0维长度(15),因此需要先将B调整为和A维度、其余轴长度匹配的3维数组,再沿第1维拼接。
- 第一步:为B新增第0维度,将形状从
(15, 82)调整为(1, 15, 82) - 第二步:将调整维度后的B沿第0维重复65341次,得到形状为
(65341, 15, 82)的数组,和A的第0、第2维完全匹配 - 第三步:沿第1维(
axis=1)拼接A和处理后的B,得到目标数组
代码实现
import numpy as np # 请将下方示例数组替换为你的实际A、B数组 A = np.random.rand(65341, 2, 82) B = np.random.rand(15, 82) # 处理B数组:升维 + 重复匹配第一维长度 B_3d = B[np.newaxis, :, :] B_matched = np.repeat(B_3d, repeats=A.shape[0], axis=0) # 执行拼接 C = np.concatenate([A, B_matched], axis=1) # 验证输出形状 print(C.shape) # 输出结果为 (65341, 17, 82)
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

