python - 如何导入具有所需结构的 .txt 文件
问题描述
我需要导入一个 txt 文件,该文件应该是 X 行,每行 18 列,但实际上是这样的(即使不能看到每 13 列开始一个只有 5 个元素的新行):
2.0462020E+001 2.9598587E+001 2.8684617E+001 1.2745371E+001 2.3967345E+001 2.4593504E+001 1.2683864E +000 0.0000000e+000 0.0000000e+000 0.0000000e+000 0.0000000e+000 0.0000000e+000
8.8575460e-001 1.0210176E+000 1.2740904E+000 1.3526302E+000 1.4878932E+000 1.8107791E+000 1.906772E +000 0.0000000e+000 0.0000000e+000 0.0000000e+000 0.0000000e+000 0.0000000e+000
该调用feat = np.loadtxt(x)
返回一个奇怪的维度 (3, 602014),例如,如果我分析第 0 行,它的开头如下: 1.0 20.46 29.58 28.68 12.74 23.96 24.59 12.683.12 2.0 20.46 29.58 ......就像结果中的第一行一样获取真实数据集 0,3,6,9,12 列的所有非 0 值 ...结构相同,从 1.0 + values!=0 of 1st line + 2.0 + values!= 4th line 开始。
正如我所说,我想获得一个维度数组 (X, 18) 没有出现的 1.0 和 2.0 并且 X 只是原始文件应该具有的行数(每 18 列一个新行)
该文件可以在https://github.com/OpenSLAM-org/openslam_ufastslam/blob/master/code/victoria_park/landmark.txt下载
解决方案
您的文本文件只有 4 行长,有数千列。我认为如果我们读入整个文件并去掉换行符,我们可以创建一个值列表。
然后我们可以把它变成一个 numpy 数组并 rehsape 。
import numpy as np
with open('landmark.txt', 'r') as myfile:
data=myfile.read().replace('\n', '').split()
my_data = np.array(data).reshape((int(len(data)/18), 18))
推荐阅读
- python - 熊猫`eval()`不适用于`pd.Int64Dtype()`
- game-maker-studio-2 - GMS2 仅重启房间中的一个对象
- discord.js - Discord.js 反应收集器有问题
- python - 如何将 Python 中的文件路径传递到 Windows 命令提示符而不转义问题?
- sql - 使用 SQL 查找表中连续出现的计数
- spring-boot - 何时以及如何使用 SpringData + JPA 模式和 DB 初始化?
- tsql - IF 条件返回太多值
- python - 使用多线程从请求中提取 Gzip 文件
- reactjs - 使用 MSAL React 调用 API
- php - laravel eloquent 中复杂的条件关系用于多态性