You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NumPy中无需reshape即可切片出二维列数组?

无需reshape,在NumPy中获取二维列数组切片的方法

当然有!你遇到的是NumPy切片时的“维度挤压”问题——当用单个索引选取某一列(或行)时,NumPy默认会返回一维数组。不过不用reshape也能轻松得到形状为(3,1)的二维数组,这里有几种实用的方法:

方法1:用列表形式指定列索引

把列索引放在列表里,NumPy会将其视为“选取多个列”(哪怕只有一个),从而保留二维结构:

import numpy as np
a = np.arange(9).reshape(3,3)
b = a[:, [1]]  # 注意这里是[1]而非单独的1
print(b.shape)  # 输出 (3,1)

方法2:使用长度为1的切片范围

利用切片的左闭右开特性,指定一个只包含目标列的切片区间,同样能保留维度:

b = a[:, 1:2]
print(b.shape)  # 输出 (3,1)

这里1:2表示选取索引从1到2(不包含2)的列,也就是仅第2列,但切片操作会维持原数组的二维结构。

方法3:用np.newaxis插入维度

通过np.newaxis(或等价的None)在指定位置插入一个新维度,直接将一维结果转为二维列向量:

b = a[:, 1, np.newaxis]
# 也可以写成 b = a[:, 1, None]
print(b.shape)  # 输出 (3,1)

这几种方法都不需要调用reshape,根据自己的代码习惯选择即可~

内容的提问来源于stack exchange,提问作者liyuan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:16:59