Устранение цикла for в Python и конструкции Numpy

Я ищу метод векторизации Python и / или Numpy, чтобы исключить использование цикла for для следующего:

for i in list_range_values:
    v[list_list_values[i]] += list_comp_values[i]

где:

  • list_range_values ​​- это список целочисленных значений Python, например. [1, 3, 5], взятый из диапазона (0, R-1, 1)

  • list_comp_values ​​- это список числовых значений Python, например. [0.7, 9.8, 1.2, 5, 10, 11.7, 6, 0.2] таким образом, что len (list_comp_values) = R

  • v представляет собой вектор numpy длины V, такой что R может быть <, =,>, чем V

  • list_list_values ​​- это список списков Python (каждый список содержит различное количество целочисленных значений, например [[3, 6, 7], [5, 7, 11, 25, 99], [8, 45], [4, 7, 8], [0, 1], [21, 31, 41], [9, 11, 22, 33, 44], [17, 19]]) взяты из диапазона (0, V-1, 1 ) и с len (list_list_values) = R

Например.

for i in list_range_values (= [1, 3, 5]):
    i=1: v[[5, 7, 11, 25, 99]] += list_comp_values[1] (= 9.8)
    i=3: v[[4, 7, 8]] += list_comp_values[3] (= 5)
    i=5: v[[21, 31, 41]] += list_comp_values[5] (= 11.7)

Есть ли метод, позволяющий исключить цикл for?

Cython, Scipy / Weave / Blitz и модуль C являются альтернативными решениями, но мы хотим сначала убедиться, есть ли ответ векторизации Numpy.

7
задан Henry Thornton 2 January 2012 в 17:00
поделиться