如何在NumPy中将一维数组合并为二维数组?含多数组合并场景
NumPy一维数组合并为二维数组的实用方法
嘿,我来帮你搞定NumPy里数组合并的问题!下面分两种场景给你详细说明:
1. 将一维数组合并为二维数组
NumPy提供了好几种直观的方式实现这个需求,我给你列几个最常用的:
方法一:用np.vstack()垂直堆叠(按行合并)
这个方法会把每个一维数组直接作为二维数组的一行,非常适合需要行结构的场景:
import numpy as np # 先创建两个一维数组 arr1 = np.array([1, 2, 3]) arr2 = np.array([4, 5, 6]) # 合并成二维数组 result = np.vstack([arr1, arr2]) print(result) # 输出: # [[1 2 3] # [4 5 6]]
方法二:用np.column_stack()水平堆叠(按列合并)
如果你想把一维数组作为二维数组的列,这个方法就很顺手:
result = np.column_stack([arr1, arr2]) print(result) # 输出: # [[1 4] # [2 5] # [3 6]]
方法三:直接用np.array()包裹数组列表
这是最简洁的按行合并方式,代码可读性拉满:
result = np.array([arr1, arr2]) print(result) # 输出和vstack的结果完全一致
方法四:用np.concatenate()配合形状调整
这个方法灵活性最高,需要先把一维数组reshape成二维结构((1, -1)表示1行,列数自动计算),再指定合并轴:
# 按行合并(axis=0) row_result = np.concatenate([arr1.reshape(1, -1), arr2.reshape(1, -1)], axis=0) # 按列合并(axis=1) col_result = np.concatenate([arr1.reshape(-1, 1), arr2.reshape(-1, 1)], axis=1)
2. 合并三个一维数组得到目标二维数组
逻辑和两个数组完全一致,只是把数组列表里的元素增加到三个就行。我举两个常见的目标场景例子:
场景一:将三个一维数组作为二维数组的行
假设你有三个一维数组:
arr_a = np.array([10, 20, 30]) arr_b = np.array([40, 50, 60]) arr_c = np.array([70, 80, 90])
要合并成3行3列的二维数组,用vstack或者直接np.array()都可以:
target = np.vstack([arr_a, arr_b, arr_c]) # 或者 target = np.array([arr_a, arr_b, arr_c]) print(target) # 输出: # [[10 20 30] # [40 50 60] # [70 80 90]]
场景二:将三个一维数组作为二维数组的列
如果目标是3列的二维数组,直接用column_stack:
target = np.column_stack([arr_a, arr_b, arr_c]) print(target) # 输出: # [[10 40 70] # [20 50 80] # [30 60 90]]
小提示:
如果你的目标二维数组有特殊形状(比如不是每行/每列对应一个一维数组),可以先调整每个一维数组的形状,再用np.concatenate()指定合适的轴来合并,自由度很高。
内容的提问来源于stack exchange,提问作者Tuffling_Tony
相关产品推荐
相关产品推荐

