我希望加速下面的代码,该代码循环通过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]