将 numpy 数组的元组保存到磁盘?
Save tuple of numpy arrays to disk?
当我 运行 compute
函数从图像中提取它们时,我得到了一个 numpy 数组的元组 (keypoint, descriptor)
。
有没有办法将这个元组打包在一起,以便我可以将它们保存到一个文件中,或者将它们作为一行写入 CSV 文件中?
有几种方法可以做到这一点:
可以使用Python csv
module, specifically writer
objects:
import csv
writer = csv.writer(open("file.csv","w"))
for row in array:
writer.writerow(str(row))
根据 this question,这可能存在一些格式问题。
如评论中所说,可以使用numpy.savetxt()
。这可能是最好的方法:
numpy.savetxt("file.csv",array,delimiter=",")
您也可以使用pickle
module:
import pickle
pickle.dump(array,open("file","w"))
如我在上面链接的文档中所述,pickle.load()
不应用于加载不受信任的数据。
而不是使用 pickle
,我建议使用 cPickle
:
import cPickle as pickle
pickle.dump(array, open('file.p', 'wb'))
请注意,您的所有调用都与使用 pickle
时相同——只有 import
行发生了变化。
cPickle
比 pickle
快得多,并且使用大数组可以节省很多时间。
也就是说,当您处理 numpy
数组时,使用 numpy
的保存功能——例如,np.savetxt
——是最好的选择。
当我 运行 compute
函数从图像中提取它们时,我得到了一个 numpy 数组的元组 (keypoint, descriptor)
。
有没有办法将这个元组打包在一起,以便我可以将它们保存到一个文件中,或者将它们作为一行写入 CSV 文件中?
有几种方法可以做到这一点:
可以使用Python
csv
module, specificallywriter
objects:import csv writer = csv.writer(open("file.csv","w")) for row in array: writer.writerow(str(row))
根据 this question,这可能存在一些格式问题。
如评论中所说,可以使用
numpy.savetxt()
。这可能是最好的方法:numpy.savetxt("file.csv",array,delimiter=",")
您也可以使用
pickle
module:import pickle pickle.dump(array,open("file","w"))
如我在上面链接的文档中所述,
pickle.load()
不应用于加载不受信任的数据。
而不是使用 pickle
,我建议使用 cPickle
:
import cPickle as pickle
pickle.dump(array, open('file.p', 'wb'))
请注意,您的所有调用都与使用 pickle
时相同——只有 import
行发生了变化。
cPickle
比 pickle
快得多,并且使用大数组可以节省很多时间。
也就是说,当您处理 numpy
数组时,使用 numpy
的保存功能——例如,np.savetxt
——是最好的选择。