我正在努力提高我正在研究的算法的处理速度。在尝试使用多处理池和map在所有CPU核上有效地分配工作负载之前,如果可能的话,我想对这个循环进行矢量化。你知道吗
这里有一个例子。你知道吗
v = [1,2,3,4,5,6,7,8,9,10]
w = [-3,-2,-1,0,1,2,3]
u = sorted(w, reverse=True)
i = 0
check = 0
while v[i] != v[-1]:
if check == 0:
for k in range(len(w)):
if (v[i] < w[k] & v[i+1] >= w[k]) or (v[i] > w[k] & v[i+1] <= w[k]):
do_somthing()
check = 1
break
i = i+1
if check == 1:
for k in range(len(u)):
if (v[i] <= u[k] & v[i-1] > u[k]) or (v[i] >= u[k] & v[i-1] < u[k]):
do_something_else()
check = 0
break
i = i+1
示例中的数组值是完全随机的。V至少包含2000个元素,而w的大小总是固定的。你知道吗
这是一个尝试。我观察到第一个和第二个
for
块中的条件是相同的,只有一个循环选择满足它的最低的w
,另一个循环选择最高的w
。你知道吗你能检查一下下列结果是否正确吗?你知道吗
说明:我们用
np.digitize
来寻找指数smalles/magestw
,这些指数一次性满足各种不等式v
。这提供了几个掩码,我们将它们组合起来,以确定需要执行哪些v, w
对do_something
和do_something_else
。最后两行中的参数是w和v的索引相关问题 更多 >
编程相关推荐