小编pkl*_*lip的帖子

用数字数据比cPickle更快?

目前我正在使用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)

python numpy pickle

15
推荐指数
1
解决办法
4983
查看次数

标签 统计

numpy ×1

pickle ×1

python ×1