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

如何使用NumPy从文本文件中提取指定行和列?

解决numpy.loadtxt无法选择任意行的问题

numpy的loadtxt确实没有类似usecols的userow参数,这是因为它的设计逻辑是优先按行批量读取,行筛选主要靠skiprows(跳过开头行)、max_rows(读取前N行)这类参数,没法直接指定任意行索引。要实现按需选任意行和列,有几种实用方法:

方法1:全量读取后切片(适合小文件)

先把整个文件的数据读入numpy数组,再用索引直接筛选目标行和列,简单直接:

import numpy as np

filename = 'Hear.txt'
# 读取全部数据(跳过表头行)
all_data = np.loadtxt(filename, delimiter=',', skiprows=1, dtype=str)
# 比如选择第2、4行(0索引对应第2行)和第0列
selected_data = all_data[[1, 3], 0]
print(selected_data)

方法2:逐行读取筛选(适合大文件)

如果文件太大,全读占内存,就手动打开文件,只保留需要的行和列:

import numpy as np

filename = 'Hear.txt'
# 定义要选的行(跳过表头后的索引)和列
target_rows = [1, 3]
target_cols = [0]

selected = []
with open(filename, 'r') as f:
    next(f)  # 跳过第一行表头
    for idx, line in enumerate(f):
        if idx in target_rows:
            # 拆分列并筛选目标列
            cols = line.strip().split(',')
            selected.append([cols[c] for c in target_cols])

# 转成numpy数组
data = np.array(selected, dtype=str)
print(data)

方法3:用pandas简化操作(更灵活)

如果不局限于numpy,pandas的read_csv支持更灵活的行和列筛选,代码更简洁:

import pandas as pd

filename = 'Hear.txt'
# 先读取目标列
df = pd.read_csv(filename, usecols=[0])
# 选择指定行(iloc用0索引)
selected_data = df.iloc[[1, 3]].values
print(selected_data)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 12:20:07