将pickled numpy数组有效地统一到一个文件中

时间:2018-04-20 20:56:29

标签: python performance pandas numpy pickle

我有一个包含数千个腌制的一维numpy数组的文件夹,其中每个数组的长度为921603个整数值(每个最多3个数字)。

喜欢如此:

folder/
  |0.pkl
  |1.pkl
  |2.pkl
   ...
  |5000.pkl

目标是将它们转换为最终的merged.csv文件,以便每个数据点以pickled numpy数组的形式表示输出文件中的一行。

我尝试过的超低效方法:

  • 加载pickle并遍历它们以构造一个字符串,然后将其附加到csv文件中。 :(

  • 使用numpy.savetxt()也没有像我希望的那样顺利进行...

最终目标是获得一个合并文件,作为tensorflow的训练数据,所以我也欢迎对数据点的不同和可能优化的打包方法提出不同的想法。

对于任何小小的评论和想法,我都会非常高兴!

1 个答案:

答案 0 :(得分:0)

直接numpy方法是在列表中收集数组,将它们连接成一个大数组,然后保存它。

alist = []
for file in dir:
   with open(file,'rb') as f:
      alist.append(pickle.load(f))
arr = np.array(alist)
# or arr = np.stack(alist)

arr应该是一个二维数组。

np.save(bigfile, arr)会将整件事保存在一个文件中。

(顺便说一下,数组的pickle使用np.save格式)

np.savetxt(bigfile, arr, fmt='%3d', delimiter=',')也应该以csv格式保存数组。

尝试一部分泡菜。