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

如何从NumPy数组中按指定列索引获取特定格式的多列

获取NumPy多列并保持二维数组格式

你可以直接将多个列索引放入**列表(或NumPy数组)**中进行索引,就能得到保持二维结构的结果,无需使用切片语法。具体实现如下:

示例代码

1. 基础多列索引示例

import numpy as np

array_data = np.array([[1, 2, 3],
                       [4, 5, 6],
                       [7, 8, 9]])

# 要选取的多个列索引,比如第2列和第3列(索引1和2)
column_indices = [1, 2]
selected_columns = array_data[:, column_indices]
print(selected_columns)

输出结果:

[[2 3]
 [5 6]
 [8 9]]

2. 结合Pandas列名转索引的场景

如果你的列索引来自Pandas数据框的指定列名,可以先通过df.columns.get_indexer()获取对应索引,再传入NumPy数组进行索引:

import numpy as np
import pandas as pd

# 示例Pandas数据框
df = pd.DataFrame([[1,2,3], [4,5,6], [7,8,9]], columns=['col_a', 'col_b', 'col_c'])

# 指定要选取的列名
target_columns = ['col_b', 'col_c']
# 获取列名对应的索引
column_indices = df.columns.get_indexer(target_columns)

# 从NumPy数组中选取对应列
array_data = df.to_numpy()
selected_columns = array_data[:, column_indices]
print(selected_columns)

输出结果同样是二维结构:

[[2 3]
 [5 6]
 [8 9]]

原理说明

当你使用单个整数索引(如[:,1])时,NumPy会返回降维的一维数组;但使用列表/数组形式的多个索引(如[:,[1,2]])时,NumPy会保留原数组的二维结构,正好符合你需要的格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 22:02:04