gpt4 book ai didi

python - Python中genfromtxt()中的可变列数?

转载 作者:行者123 更新时间:2023-12-04 20:10:00 25 4
gpt4 key购买 nike

我有一个 .txt具有不同长度行的文件。每行是代表一个轨迹的系列点。由于每条轨迹都有自己的长度,因此行的长度都不同。也就是说,列数从一行到另一行不同。

AFAIK,genfromtxt() Python 中的模块要求列数相同。

>>> import numpy as np
>>>
>>> data=np.genfromtxt('deer_1995.txt', skip_header=2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\numpy\lib\npyio.py", line 1638, in genfromtxt
raise ValueError(errmsg)
ValueError: Some errors were detected !
Line #4 (got 2352 columns instead of 1824)
Line #5 (got 2182 columns instead of 1824)
Line #6 (got 1412 columns instead of 1824)
Line #7 (got 1650 columns instead of 1824)
Line #8 (got 1688 columns instead of 1824)
Line #9 (got 1500 columns instead of 1824)
Line #10 (got 1208 columns instead of 1824)

It is also able to fill the missing values by the help of filling_values .但是,我认为这会引起不必要的麻烦,我希望避免。

那么在不填写“缺失值”的情况下简单地导入此数据集的最佳(Pythonic)方法是什么?

最佳答案

Numpy.genfromtxt 不处理可变长度行,因为 numpy 仅适用于数组和矩阵(固定行/列大小)。

您需要手动解析数据。例如 :

数据(基于csv):

0.613 ;  5.919 
0.615 ; 5.349
0.615 ; 5.413
0.617 ; 6.674
0.617 ; 6.616
0.63 ; 7.418
0.642 ; 7.809 ; 5.919
0.648 ; 8.04
0.673 ; 8.789
0.695 ; 9.45
0.712 ; 9.825
0.734 ; 10.265
0.748 ; 10.516
0.764 ; 10.782
0.775 ; 10.979
0.783 ; 11.1
0.808 ; 11.479
0.849 ; 11.951
0.899 ; 12.295
0.951 ; 12.537
0.972 ; 12.675
1.038 ; 12.937
1.098 ; 13.173
1.162 ; 13.464
1.228 ; 13.789
1.294 ; 14.126
1.363 ; 14.518
1.441 ; 14.969
1.545 ; 15.538
1.64 ; 16.071
1.765 ; 16.7
1.904 ; 17.484
2.027 ; 18.36
2.123 ; 19.235
2.149 ; 19.655
2.172 ; 20.096
2.198 ; 20.528
2.221 ; 20.945
2.265 ; 21.352
2.312 ; 21.76
2.365 ; 22.228
2.401 ; 22.836
2.477 ; 23.804

解析器:
import csv
datafile = open('i.csv', 'r')
datareader = csv.reader(datafile)
data = []
for row in datareader:
# I split the input string based on the comma separator, and cast every elements into a float
data.append( [ float(elem) for elem in row[0].split(";") ] )

print data

关于python - Python中genfromtxt()中的可变列数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19152432/

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