繁体   English   中英

使用numpy.genfromtxt()跳过指定数量的列

[英]Skip a specified number of columns with numpy.genfromtxt()

我有一个大表(文本格式的数字),我想用numpy.genfromtxt()加载。 我想忽略前n列,比如5.我事先不知道表的大小(行数或列数)。

我看到genfromtxt()有一个选项skip_header ,允许跳过指定数量的标题行,但似乎没有列的选项。 有一个usecols选项,但我必须指定我想保留的列号,而不是我想要丢弃的列号(我不提前知道这个号码)。

显然我可以加载整个东西,然后扔掉前n列,但这不优雅,在内存方面浪费。

此外,我可以进入文件,查找列数,然后构造usecols参数,但这是相当混乱的。

关于如何优雅地解决这个问题的任何想法? 我可以使用一些隐藏/未记录的参数吗?

对于旧版本的numpy,在第一行查看以发现列数并不难:

import numpy as np
with open(fname, 'r') as f:
    num_cols = len(f.readline().split())
    f.seek(0)
    data = np.genfromtxt(f, usecols = range(5,num_cols))
print(data)

在较新版本的Numpy中, np.genfromtxt可以采用可迭代参数,因此您可以将生成的文件包装在生成行的生成器中,跳过前N列。 如果你的数字是空格分隔的,那就像是

np.genfromtxt(" ".join(ln.split()[N:]) for ln in f)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM