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

如何读取TXT文件第一列并存入数组?需跳过两行字符串

解决方法:跳过前两行提取TXT第一列存数组

嘿,我太懂这种Octave里一行代码搞定,换别的方式就卡壳的感觉!针对你这个有1万行6列、需要跳过前两行字符串、只提取第一列存数组的需求,我给你几个实用的方案,覆盖不同常用工具:

1. 用Numpy(和Octave逻辑最接近)

如果习惯Octave的矩阵操作,用Numpy简直无缝衔接,处理1万行数据效率也超高:

import numpy as np

# skiprows=2 跳过前两行,usecols=0 指定取第一列(Python索引从0开始)
first_column = np.loadtxt("sample.txt", skiprows=2, usecols=0)

执行完first_column就是一个Numpy数组,和你Octave里data(:,1)的用法几乎一致。

2. Python标准库(不用第三方依赖)

如果不想装Numpy,用Python自带的文件操作也能轻松实现:

first_column = []
with open("sample.txt", "r") as file:
    # 手动跳过前两行
    next(file)
    next(file)
    for line in file:
        # 按空格分割行内容,取第一个元素转成数值
        line_parts = line.strip().split()
        if line_parts:  # 避免空行干扰
            first_column.append(float(line_parts[0]))

# 要是需要数组格式,转成Numpy数组就行:
# import numpy as np
# first_column_array = np.array(first_column)

3. R语言方案

如果你常用R做数据分析,这个方法也很直接:

# skip=2 跳过前两行,colClasses指定仅读取第一列为数值,其余列忽略
first_column <- read.table("sample.txt", skip = 2, colClasses = c("numeric", rep("NULL", 5)))[, 1]

这里colClasses里的rep("NULL",5)是告诉R不要读取剩下的5列,最后[,1]提取出第一列的向量(R里的数组等价结构)。

4. Shell脚本(命令行快速处理)

要是你想在终端直接处理,用Bash脚本也能把第一列存到数组里:

# 初始化数组
first_column=()

# 从第三行开始读取文件,每行只取第一个字段
while read -r col1 _; do
    first_column+=("$col1")
done < <(tail -n +3 sample.txt)

# 可以打印数组验证:
# echo "${first_column[@]}"

tail -n +3是从文件第三行开始输出,read -r col1 _会把每行的第一个字段存到col1,剩下的字段忽略,然后逐个添加到数组里。

小提示

如果你的文件分隔符不是空格(比如制表符),只需要调整对应参数:

  • Numpy:加delimiter="\t"
  • Python:把split()改成split("\t")
  • R:加sep="\t"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:05:53