在Python中生成(空格分隔)文本文件的列(或行)数组

2024-06-12 18:26:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我也见过类似的问题,但答案总是一串行。我想对文本文件的列进行数组。我有一个这样的文本文件(有一个文本文件看起来像这样,但是有106行19列):

O2     CO2     NOx     Ash     Other
20.9     1.6     0.04     0.0002    0.0
22.0     2.3     0.31     0.0005    0.0    
19.86     2.1     0.05     0.0002    0.0
17.06     3.01     0.28     0.006    0.001

我希望有列的数组(所有列的2D数组或每个列的1D数组),第一行只用于名称,所以第一行是列表。因为我想以后再画出来。在

例如,对于列,期望的结果是:

^{pr2}$

第一排:

^{3}$

Tags: 答案名称列表数组otherco2文本文件o2
2条回答

更新3

st = open('file.txt', 'r').read()

dct = []
species = []

for row in st.split('\n')[0].split(' '):
    species.append(row)


for no, row in enumerate(st.split('\n')[1:]):
    dct.append([])
    for elem in row.split(' '):
        dct[no].append([float(elem)])

print(species)
print(dct)

结果

^{pr2}$

在文件.txt在

O2 CO2 NOx Ash Other
20.9 1.6 0.04 0.0002 0.0
22.0 2.3 0.31 0.0005 0.0
19.86 2.1 0.05 0.0002 0.0
17.06 3.01 0.28 0.006 0.001

我建议不要手动循环大数据集中的值(在本例中是一种选项卡分隔的关系模型)。只需使用像NumPy这样安全知名的图书馆的方法:

import numpy as np

data = np.transpose(np.loadtxt("/path/to/file.txt", skiprows=1, delimiter="\t"))

使用内部loadtxt读取文件,使用skiprows=1参数跳过第一行(列名),以避免不兼容的数据类型和进一步的转换。如果您需要该行在同一结构中,只需使用在索引0处插入新行。然后你需要转置矩阵,在NumPy中也有一个安全的方法。我只是使用loadtxt(这是每一行的列表列表)的输出作为transpose的输入来给出一行代码。但最好分开使用,以避免“火车失事”,也能看到其间发生了什么,并最终纠正不必要的结果。在

PS:必须调整delimiter参数以匹配原始文件中的参数。有关详细信息,请查看loadtxt文档。我认为这是一笔账单。@谢谢你的留言

相关问题 更多 >