首页 > 解决方案 > Numpy 从文本文件中读取可变数量的列到数组中

问题描述

我的文件格式如下:

  2106   2002   27   26   1
 1   0.000000  0.000000 
 2   0.389610  0.000000 
 3   0.779221  0.000000 
 4   1.168831  0.000000 
 5   1.558442  0.000000 
 6   1.948052  0.000000 
 7   2.337662  0.000000 
 8   2.727273  0.000000 
 9   3.116883  0.000000 
 10   3.506494  0.000000 

我想读这些。有比这更多的行,有些只有两列。在 MATLAB 中我使用 readmatrix() 并且效果很好,Python 有什么可比的吗?因为python genfromtxt()并且python loadtxt不适用于可变数量的列。

我应该坚持使用 MATLAB,因为 Python 似乎缺少这样的关键功能吗?

编辑:这是我在 numpy 中想要的 matlab 输出:

2106    2002    27  26  1   0
1   0   0   0   0   0
2   0.389610000000000   0   0   0   0
3   0.779221000000000   0   0   0   0
4   1.16883100000000    0   0   0   0
5   1.55844200000000    0   0   0   0
6   1.94805200000000    0   0   0   0
7   2.33766200000000    0   0   0   0
8   2.72727300000000    0   0   0   0
9   3.11688300000000    0   0   0   0
10  3.50649400000000    0   0   0   0

标签: pythonnumpy

解决方案


import numpy as np

headers = []
rows = []
with open("test.txt", 'r') as file:
    for i, v in enumerate(file.readlines()):
        if i == 0:
            headers.extend(v.split())
        else:
            rows.append(v.split())
for i, v in enumerate(rows):
    while len(v) != len(headers):
        v.append(0)
    rows[i] = v
rows = np.array(rows)

让我知道是否需要任何修改


推荐阅读