将文本文件分割为多个numpy数组

0 投票
1 回答
626 浏览
提问于 2025-04-18 01:31

我想把一个简单的单列文件里的浮点数分成多个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整除。

撰写回答