Numpy:从多个文件读取多列数据

0 投票
1 回答
963 浏览
提问于 2025-04-18 03:58

我有几个文件,想要一次性输入数据,也就是说不想一个个提取每一列。

如果只有一个文件,我会用下面的方式来处理:

data1, data2, data3 = zip(*numpy.loadtxt("myfile.data",usecols=((0,3,4))))

我会在读取完数据后“解压”这些列。但是因为我有好几个输入文件,所以我不知道该怎么调整这个方法,除了一个个读取,然后最后再合并。但我现在要处理的数据量很大(大约20GB),所以我觉得这样做效率不高(可能会导致内存中数据移动很多)。

你知道有没有更好的方法吗?

提前谢谢你。

1 个回答

1

如果 data1data2data3 只占你20GB数据的一小部分(比如说你有很多列数据,但只取了其中的3列),那么这些代码会一次性把它们全部读入到RMA中:

data_all=np.vstack([np.loadtxt(item,usecols=((0,3,4))) for item in your_file_list])
data1, data2, data3=data_all.T

撰写回答