如何使用numpy加载不定列数的数据
我们怎么能加载一个用制表符分隔的文本文件,但这个文件的列数不固定呢?也就是说,缺失的值完全跳过,最后得到一个列表或者数组,里面每一行都是一个numpy数组(或者是一个完整的numpy数组?这可能不行,因为numpy需要固定的大小)?
这是不是只能通过用Python逐行读取,然后用loadtxt
把每一行转换成一维数组来实现呢?
list=[]
for lineString in file:
list.append( np.loadtxt(lineString) )
或者说,有没有其他方法可以用load txt来做到这一点?
1 个回答
1
也许你可以使用 pandas
这个库。
如果你的文件看起来像这样:
1 2 3 4 5 6
1 2
8.0 9 97 54
那么这样做:
import pandas as pd
pd.read_csv('yourfile.txt',sep='\t')
会得到:
1 2 3 4 5 6
0 1 2 NaN NaN NaN NaN
1 8 9 97 54 NaN NaN
要转换成 numpy 数组的话:
np.array(pd.read_csv('yourfile.txt',sep='\t'))
array([[ 1., 2., nan, nan, nan, nan],
[ 8., 9., 97., 54., nan, nan]])