如何加快Numpy操作?

时间:2018-12-01 15:00:55

标签: python pandas numpy parallel-processing joblib

我当前具有如下所示的数据框:

enter image description here

此数据框有100万行。我想执行以下操作:

对第0行说,b为6。 我想创建另一列c。

第0行的c计算为一行的平均值(即上图中的8行),其中b的范围是6-3至6 + 3(此处3是所有行的固定数)。

当前,我已通过将a列和b列转换为numpy数组,然后循环执行了此操作。下面我附上了代码:

index = range(0,1000000)
columns = ['A','B']
data = np.array([np.random.randint(10, size=1000000),np.random.randint(10, size=1000000)]).T
df = pd.DataFrame(data, index=index, columns=columns)

values_b = df.B.values
values_a = df.A.values
sum_array = []
program_starts = time.time()
for i in range(df.shape[0]):
    value_index = [values_b[i] - 3,values_b[i] + 3]
    sum_array.append(np.sum(values_a[value_index]))

time_now = time.time()
print('time taken ',time_now- program_starts)

此代码大约需要8秒钟才能运行。

如何使运行速度更快?我试图通过将数组分成10万行,然后为每个10万个数组并行调用for循环来并行化任务。但是,这需要更多的时间。请任何帮助将不胜感激。

0 个答案:

没有答案