питон — Scipy Weave: экспортный вектор

Я хочу использовать scipy-weave для вычисления массива, длина которого зависит от данных. Давайте возьмем упрощенную версию задачи, принимая накопленную сумму до достижения заданного порога:

from scipy.weave import inline
import numpy as npdef 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 Rprint 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. Кто-нибудь знает, как это сделать эффективно?

* Edit: Или так я думал … кажется, что создание списка в weave на самом деле в 3-4 раза быстрее, чем в python. Но, тем не менее, я ожидаю гораздо большего увеличения за счет использования чистой структуры C ++.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]