如何在Python中为二维np数组添加指定列?(附实例)
在NumPy二维数组中添加指定一维数组作为新列
嘿,这个需求很容易实现,用NumPy自带的数组拼接函数就能搞定,我给你两种实用的方法:
先准备好你的数据
首先我们先定义好原二维数组和要添加的一维列:
import numpy as np # 原4行6列的二维数组 original_arr = np.array([ [1, 2, 3, 4, 5, 6], [2, 6, 5, 2, 4, 1], [8, 7, 9, 0, 0, 0], [2, 3, 4, 5, 6, 2] ]) # 要添加的一维数组(长度必须和原数组行数一致) new_column = np.array([1, 0, 1, 0])
方法1:使用np.hstack()拼接
np.hstack()用于水平拼接数组,但要求输入的数组维度匹配。因为一维数组默认是行向量(形状为(4,)),我们需要先把它转成列向量(形状为(4,1)),再和原二维数组拼接:
# 将一维数组转为列向量,再水平拼接 result = np.hstack((original_arr, new_column.reshape(-1, 1))) print(result)
运行后会输出你想要的结果:
[[1 2 3 4 5 6 1] [2 6 5 2 4 1 0] [8 7 9 0 0 0 1] [2 3 4 5 6 2 0]]
这里reshape(-1, 1)的-1是让NumPy自动计算行数,确保转成和原数组行数一致的列向量。
方法2:使用np.column_stack()(更简便)
np.column_stack()是专门为按列拼接设计的函数,它会自动把一维数组当作列来处理,不需要手动转维度:
result = np.column_stack((original_arr, new_column)) print(result)
这个方法和上面的结果完全一样,代码更简洁,推荐日常使用。
注意事项
- 要添加的一维数组长度必须和原二维数组的行数一致,否则会报错;
- 这个方法支持任意内容的一维数组,完全满足你“不是添加全零列”的需求,比如换成
[5,3,2,7]也能正常拼接。
内容的提问来源于stack exchange,提问作者PSN
相关产品推荐
相关产品推荐

