Numpy:从多个文件读取多列数据
我有几个文件,想要一次性输入数据,也就是说不想一个个提取每一列。
如果只有一个文件,我会用下面的方式来处理:
data1, data2, data3 = zip(*numpy.loadtxt("myfile.data",usecols=((0,3,4))))
我会在读取完数据后“解压”这些列。但是因为我有好几个输入文件,所以我不知道该怎么调整这个方法,除了一个个读取,然后最后再合并。但我现在要处理的数据量很大(大约20GB),所以我觉得这样做效率不高(可能会导致内存中数据移动很多)。
你知道有没有更好的方法吗?
提前谢谢你。
1 个回答
1
如果 data1
、data2
和 data3
只占你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