如何向量化for循环?

时间:2018-10-25 04:26:39

标签: python loops matrix vectorization

我需要对我用来分析大量音频数据的这段代码进行矢量化处理。为了规范化数据,我使用了for循环,但想对其进行矢量化以提高性能。

for i in range(len(state)):

    if state[i] == 0:
        savedAudio[i] = 0
    else:
        savedAudio[i] = savedAudio[i] / env[i] 

State,savedAudio和env只是一个大的一维数组,充满了来自音板的读数。我是向量化概念的新手,目前还不太了解。

1 个答案:

答案 0 :(得分:0)

使用numpy模块,您可以执行以下操作

import numpy as np

# sample inputs
state = [0,1,1]
savedAudio = [3,3,3]
env = [1,2,4]

# convert your lists to numpy arrays
savedAudio = np.array(savedAudio, dtype = 'float64')
state = np.array(state)
env = np.array(env)

# vectorized replacement
savedAudio[state != 0] = savedAudio[state != 0] / env[state != 0]
savedAudio[state == 0] = 0

print(savedAudio)
>>> [0.   1.5  0.75]