如何使用numpy加载不定列数的数据

1 投票
1 回答
823 浏览
提问于 2025-04-17 20:55

我们怎么能加载一个用制表符分隔的文本文件,但这个文件的列数不固定呢?也就是说,缺失的值完全跳过,最后得到一个列表或者数组,里面每一行都是一个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]])

撰写回答