Scipy编织:导出矢量

时间:2015-11-16 17:39:50

标签: python c++ numpy scipy

我想用scipy-weave来计算一个长度取决于数据的数组。让我们采用问题的简化版本,获取累积总和,直到达到给定的阈值:

from scipy.weave import inline
import numpy as np


def cumsum_until(arr, limit):

    n = len(arr)
    code = '''
    py::list ret;
    float sum = 0;
    for(int i = 0; i < n; i++) {
        sum += arr[i];
        if (sum < limit)
            ret.append(sum);
        else
            break;
    }
    return_val = ret;
    '''
    R = inline(code,['arr', 'limit', 'n'])
    print R


print cumsum_until(arr = np.array([1,2,3,4,5]), limit = 11)

[1.0,3.0,6.0,10.0]

现在,使用python列表执行它并不高效 - 我可以在纯python *中更快地完成此操作。似乎使用的合适的c结构是std :: vector,但我无法弄清楚如何将最终产品导出回python。有谁知道如何有效地做到这一点?

*编辑:或者我认为......似乎在编织中构建列表实际上比在python中执行快3-4倍。但是,我仍然希望通过使用纯C ++结构来获得更大的增长。

0 个答案:

没有答案