目前我正在使用Python进行图像检索.在该示例中从图像提取的关键点和描述符表示为numpy.arrays.形状(2000,5)中的第一个和形状(2000,128)的后者.两者都只包含值dtype=numpy.float32.
所以,我想知道使用哪种格式来保存我提取的关键点和描述符.即我总是保存2个文件:一个用于关键点,一个用于描述符 - 这在我的测量中算作一步.我比较了pickle,cPickle(都与协议0和2),并与NumPy的二进制格式.pny,结果真的困惑我:

我一直认为cPickle应该比pickle模块更快.但特别是协议0的加载时间在结果中非常突出.有没有人对此有解释?是因为我只使用数字数据吗?看起来很奇怪......
PS:在我的代码中,我基本上number=1000在每种技术上循环1000次()并最终平均测量的时间:
timer = time.time
print 'npy save...'
t0 = timer()
for i in range(number):
numpy.save(npy_kp_path, kp)
numpy.save(npy_descr_path, descr)
t1 = timer()
results['npy']['save'] = t1 - t0
print 'npy load...'
t0 = timer()
for i in range(number):
kp = numpy.load(npy_kp_path)
descr = numpy.load(npy_descr_path)
t1 = timer()
results['npy']['load'] = t1 - t0
print 'pickle protocol 0 save...'
t0 = timer()
for …Run Code Online (Sandbox Code Playgroud)