如何使用Numpy的hstack合并二维数组的第6列与第8列?
使用numpy.hstack合并数组的第6列和第8列
你当前的代码myarray1[:, 6:8]取的是第6列和第7列(numpy切片遵循左闭右开规则),而且单独传入这个二维数组给hstack其实没有意义——hstack的作用是合并多个数组,而非处理单个数组的切片。
要合并第6列(索引6)和第8列(索引8),需要分别取出这两个列,再用hstack完成合并。注意:单独取一列会得到一维数组,必须先转为二维列数组,否则hstack会把它们拼接成更长的一维数组,而非二维数组的两列。
正确实现示例
import numpy as np # 示例数组:5行10列的随机数组 myarray1 = np.random.rand(5, 10) # 方法1:用切片取单列(保持二维结构)后合并 Myarray1 = np.hstack((myarray1[:, 6:7], myarray1[:, 8:9])) # 方法2:用[:, None]将一维列转为二维后合并 Myarray1 = np.hstack((myarray1[:, 6, None], myarray1[:, 8, None])) # 方法3:用column_stack更简洁(自动处理一维转二维) Myarray1 = np.column_stack((myarray1[:, 6], myarray1[:, 8]))
关键说明
myarray1[:,6:7]会返回一个(行数, 1)的二维数组,保证hstack能将两个列数组合并为(行数, 2)的目标数组。- 如果直接使用
myarray1[:,6],得到的是一维数组,hstack会把两个一维数组合并成一个更长的一维数组,不符合合并列的需求。
内容的提问来源于stack exchange,提问作者Shamsideen
相关产品推荐
相关产品推荐

