如何在python中对使用状态变量的for循环进行矢量化,即在计算过程中检查当前状态的for循环

如何在python中对使用状态变量的for循环进行矢量化,即在计算过程中检查当前状态的for循环,python,for-loop,vectorization,Python,For Loop,Vectorization,如何将以下具有当前状态内存的for循环(下面的变量“current_state”)矢量化?我在这里简化了这个函数,真正的函数有点复杂,但结构是一样的——它只是在一个太大的数组上运行,没有时间效率。总而言之:我需要知道存储在“test_array”中的信号在高于或低于某个阈值的时间和次数: test_array = [0,1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1] results_array = [] cu

如何将以下具有当前状态内存的for循环(下面的变量“current_state”)矢量化?我在这里简化了这个函数,真正的函数有点复杂,但结构是一样的——它只是在一个太大的数组上运行,没有时间效率。总而言之:我需要知道存储在“test_array”中的信号在高于或低于某个阈值的时间和次数:

test_array = [0,1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1]
results_array = []

current_state = '<=3'

for i in range(len(test_array)):
    if current_state == 'mid' and test_array[i] >= 7:
        current_state = '>=7'
        results_array.append((i,current_state))

    if current_state == 'mid' and test_array[i] <= 3:
        current_state = '<=3'
        results_array.append((i,current_state))

    if current_state == '>=7' and test_array[i] < 7:
        current_state = 'mid'
        results_array.append((i,current_state))            

    if current_state == '<=3' and test_array[i] > 3:
        current_state = 'mid'
        results_array.append((i,current_state))

print results_array
test_数组=[0,1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1,2,3,4,5,6,7,8,8,7,6,5,4,3,2,1]
结果_数组=[]
当前_状态='=7'
结果\u数组.append((i,当前\u状态))
如果当前_状态=='mid'和测试_数组[i]3:
当前_状态='mid'
结果\u数组.append((i,当前\u状态))
打印结果\u数组

我已经搜索了stackoverflow两天了,但是没有找到一个类似的例子使用这样的状态变量。如果我只是找错了地方,请接受我的道歉,并给我指出正确的地方。再次感谢善良的代码领主们

矢量化什么?如果元素的处理依赖于早期的值,那么您不能并行处理它们(如果您的意思是这样)。是的,这就是我的意思,即根据早期的值处理元素,谢谢您的回答。考虑到数据分析的连续性,是否可以安全地假设我所问的是不可能的?是的,这是一个安全的假设。有些过程本质上是连续的。“并行化”需要找到并执行需要完成的工作的独立部分。明白-谢谢你帮我澄清!!如果state变量可能包含有关完整输入历史记录的信息,那么您确实无法对处理进行矢量化,我同意。但是,您的示例可能是一种特殊情况,因为我不清楚您的输入是否可以从状态
7
(或反之亦然)跳转,您故意在循环中忽略这种情况以添加惯性,这实际上使状态变量成为必要。否则,当前状态将仅表示上一个样本,因此您可以明确放弃状态变量,并使用2-samples窗口对该处理进行矢量化。矢量化什么?如果元素的处理依赖于早期的值,那么您不能并行处理它们(如果您的意思是这样)。是的,这就是我的意思,即根据早期的值处理元素,谢谢您的回答。考虑到数据分析的连续性,是否可以安全地假设我所问的是不可能的?是的,这是一个安全的假设。有些过程本质上是连续的。“并行化”需要找到并执行需要完成的工作的独立部分。明白-谢谢你帮我澄清!!如果state变量可能包含有关完整输入历史记录的信息,那么您确实无法对处理进行矢量化,我同意。但是,您的示例可能是一种特殊情况,因为我不清楚您的输入是否可以从状态
7
(或反之亦然)跳转,您故意在循环中忽略这种情况以添加惯性,这实际上使状态变量成为必要。否则,当前状态将仅表示上一个样本,因此您可以明确放弃状态变量,并使用2-samples窗口将此处理矢量化。