如何读取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
相关产品推荐
相关产品推荐

