编程语言
首页 > 编程语言> > python-用numpy的genfromtxt读取第n行的最快方法

python-用numpy的genfromtxt读取第n行的最快方法

作者:互联网

我用numpy的genfromtxt读取了我的数据:

import numpy as np
measurement = np.genfromtxt('measurementProfile2.txt', delimiter=None, dtype=None, skip_header=4, skip_footer=2, usecols=(3,0,2))
rows, columns = np.shape(measurement)
x=np.zeros((rows, 1), dtype=measurement.dtype)
x[:]=394
measurement = np.hstack((measurement, x))
np.savetxt('measurementProfileFormatted.txt',measurement)

这很好.但我只希望最终输出文件中的第5,第6(第n个)行.
根据numpy.genfromtxt.html,没有参数可以做到这一点.我不想迭代数组.有建议的方法来解决此问题吗?

解决方法:

为了避免读取整个数组,可以将np.genfromtxt与itertools.islice结合使用以跳过行.这比读取整个数组然后切片(至少对于我尝试过的较小数组)要快一些.

例如,这是file.txt的内容:

12
34
22
17
41
28
62
71

然后例如:

>>> import itertools
>>> with open('file.txt') as f_in:
        x = np.genfromtxt(itertools.islice(f_in, 0, None, 3), dtype=int)

返回带有上述文件的0、3和6索引元素的数组x:

array([12, 17, 62])

标签:genfromtxt,arrays,python,numpy
来源: https://codeday.me/bug/20191028/1954921.html