我正在寻找Python和/或Numpy矢量化的方法,以消除以下的for循环使用:
for i in list_range_values:
v[list_list_values[i]] += list_comp_values[i]
Run Code Online (Sandbox Code Playgroud)
哪里:
list_range_values是一个整数值的Python列表,例如.[1,3,5],从范围(0,R-1,1)中抽取
list_comp_values是数值的Python列表,例如.[0.7,9.8,1.25,5,10,11.7,6,0.2]这样len(list_comp_values)= R
v是长度为V的numpy向量,使得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)
Run Code Online (Sandbox Code Playgroud)
有没有可用的方法可以消除for循环?
Cython,Scipy/Weave/Blitz和C模块是替代解决方案,但是要确保首先是否存在Numpy矢量化答案.