python - 加速遍历大型数组的循环的方法
问题描述
我正在寻找加速下面的代码,该代码循环遍历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]
多线程在这里不是一个选项,因为我已经在并行运行此代码。
有没有办法加快循环或完全消除循环?
解决方案
如果也是一个 numpy 数组
,我相信你可以只使用brain
(initial) 作为region_vals
单行中的索引:region_vals
brain = region_vals[brain]
推荐阅读
- ethereum - web3.eth.getAccounts(); 当前不工作
- javascript - 使用 Ruby 与 Cytoscape.js API 交互
- python - 我需要删除python中大于1的列表元素
- java - 如何在Java中分配内部类数组?
- bash - 在bash中自动输入初始输入后等待用户输入
- java - 从 Jdeveloper 加载 Jasper 报告
- css - 无法在 React 中导入 fontello 生成的 css
- javascript - 为什么这个 async 函数是同步运行的?
- css - 表格中不需要的边框
- python - 有没有更干的方法来创建这些基于 django 类的重复视图和 URL 模式?