首页 > 解决方案 > 加速遍历大型数组的循环的方法

问题描述

我正在寻找加速下面的代码,该代码循环遍历brain已拆分为区域(编号为 0 到 50)的每个体素,并使用相应的值重新分配该区域(在region_vals包含 51 个数字的数组中找到)。brain是一个 numpy.ndarray。由于大脑阵列的尺寸为 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]

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

有没有办法加快循环或完全消除循环?

标签: pythonnumpymultidimensional-arrayindexing

解决方案


如果也是一个 numpy 数组 ,我相信你可以只使用brain(initial) 作为region_vals单行中的索引:region_valsbrain = region_vals[brain]


推荐阅读