将文本文件分割为多个numpy数组
我想把一个简单的单列文件里的浮点数分成多个numpy数组,每个数组都是由相同数量的行组成。
举个例子,如果这个文件有180行,我想创建3个numpy数组,第一个数组包含第1到第60行的数据,第二个数组包含第61到第120行的数据,第三个数组包含第121到第180行的数据。
我试着用np.fromfile()这个函数,但它似乎不能处理文件指针(也就是说,不能先定位到第1行,读取60行,然后再定位到第61行,读取60行,依此类推)。有没有人知道怎么高效地做到这一点?
1 个回答
2
arr1, arr2, arr3 = np.loadtxt(path).reshape(3,-1)
首先,把所有的数据读进一个数组里,然后把这个数组重新调整成3行。这里的 -1
在调用 reshape
时会被自动替换成一个合适的数字。举个例子,如果这个数组的长度是180,那么调整后,数组就会有60列。需要注意的是,原始数组的长度必须能被3整除。
另外,
arr1, arr2, arr3 = np.array_split(np.loadtxt(path), 3)
这种方法更稳妥一些,因为 array_split
可以把数组分成3部分,即使原始数组的长度不能被3整除。