加速在大数组上迭代的循环的方法



我希望加速下面的代码,该代码循环通过brain中的每个体素,这些体素已被划分为区域(编号为0到50),并使用相应的值重新分配该区域(在包含51个数字的数组region_vals中找到)。brain是numpy. narray。由于大脑阵列的尺寸是182x218x182,完成这个循环大约需要12秒。

import numpy as np
# Sample data
brain = np.random.randint(10, size=(6,5,5))
region_vals = np.random.randint(250, size=11)
# Iterate through each voxel in the brain
for x in range(0, brain.shape[0]):
for y in range(0, brain.shape[1]):
for z in range(0, brain.shape[2]):
region = brain[x][y][z]  # Get region number
# Reassign voxel value
brain[x][y][z] = region_vals[region]

多线程在这里不是一个选项,因为我已经在并行运行这个代码。

是否有一种方法可以加速循环或完全删除循环?

我相信如果region_vals也是一个numpy数组,你可以在一行代码中使用brain(初始)作为region_vals的索引:brain = region_vals[brain]

最新更新