gpt4 book ai didi

python - 在Python(可能是pandas)中从文件读取数组时,处理和跳过第一行(包含元数据)的优雅方法?

转载 作者:行者123 更新时间:2023-11-30 22:08:25 27 4
gpt4 key购买 nike

假设我有一个像这样的文件bla.txt:

    21        27       268       288       
55.1 21.2 25.5 23.5 22.3 20.8
28.3 27.1 27.2 26. 25. 23.1
29.8 28.3 29.0 28.6 27.2 24.4

第一行包含我稍后想在我的脚本中使用的元数据(下面的脚本中的a, b, c, d),然后剩下的就是一个简单的数组,很容易读。有没有办法处理第一行,同时在读取数组时跳过它?

换句话说,如何以更优雅/Pythonic 的方式执行以下操作?

import numpy as np

fname = 'bla.txt'

with open(fname) as f:
lines = f.readlines()
a, b, c, d = [float(x) for x in lines[0].split()]

myarray = np.loadtxt(fname, skiprows=1)

编辑:欢迎使用 pandas 解决方案。[请注意,理想情况下,能够处理和跳过多个元数据行的解决方案将是完美的]

最佳答案

您可以告诉numpy.loadtxt跳过行。

>>> import numpy as np
>>> np.loadtxt('bla.txt', skiprows=1)
array([[55.1, 21.2, 25.5, 23.5, 22.3, 20.8],
[28.3, 27.1, 27.2, 26. , 25. , 23.1],
[29.8, 28.3, 29. , 28.6, 27.2, 24.4]])

您可以在没有 numpy 的情况下获取任何文件的第一行

>>> with open('bla.txt') as f:
... line1 = next(f)
...
>>> line1
' 21 27 268 288 \n'

如果您的标题行没有缺少值,您也可以使用 loadtxt 读取整个文件,然后将数组切片为数据和标题部分。

您没有标记它,但我建议使用 pandas 以便在您的具体情况下方便。

>>> import pandas as pd
>>> df = pd.read_csv('bla.txt', delim_whitespace=True)
>>> line1 = list(df.columns)
>>> data = df.reset_index().values
>>>
>>> line1
['21', '27', '268', '288']
>>> data
array([[55.1, 21.2, 25.5, 23.5, 22.3, 20.8],
[28.3, 27.1, 27.2, 26. , 25. , 23.1],
[29.8, 28.3, 29. , 28.6, 27.2, 24.4]])

关于python - 在Python(可能是pandas)中从文件读取数组时,处理和跳过第一行(包含元数据)的优雅方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52164047/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com