我需要对我用来分析大量音频数据的这段代码进行矢量化处理。为了规范化数据,我使用了for循环,但想对其进行矢量化以提高性能。
for i in range(len(state)):
if state[i] == 0:
savedAudio[i] = 0
else:
savedAudio[i] = savedAudio[i] / env[i]
State,savedAudio和env只是一个大的一维数组,充满了来自音板的读数。我是向量化概念的新手,目前还不太了解。
答案 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]