python - 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
解决方案
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)
让我知道是否需要任何修改
推荐阅读
- json - 用于检查 IP 是否在欧盟的 URL
- r - 如何制作时间变异函数
- javascript - 功能变量动态设置
- docker - 使用 docker-compose 将文件放入 HDFS
- kubernetes - HTTPS 请求重定向到 HTTP
- android - 如何使用处理程序创建计时器
- sql - Node js 向 SQL Server 发出请求,返回结果
- microsoft-graph-api - 在 Microsoft Graph 中获取附加消息的附件
- javascript - Javascript 函数在 Google 检查功能中触发,但并非如此
- python - 如何使用网格而不是包使我的 python 滚动条可滚动和画布自动调整大小