是否可以有效地并行枚举 rust ndarray 数组? [已关闭]

问题描述 投票:0回答:1

目前我使用以下低效的解决方法

depth.indexed_iter_mut().par_bridge()

ndarray
中是否有一个高效的并行迭代器 API 可以生成索引?
par_iter
par_iter_mut
都不是
IndexedParallelIterator
的,所以不支持调用
enumerate

rust multidimensional-array parallel-processing linear-algebra
1个回答
0
投票

Enumerate 返回一维

usize
索引,但
ndarray::Array
可能具有多个维度。你需要选择一个
Axis
来枚举,比如
Axis(0)
:

use ndarray::{array, Array2, Axis, parallel::prelude::*};

fn main() {
    let mut arr: Array2<f64> = array![[1., 2.], [3., 4.], [5., 6.]];
    arr.axis_iter_mut(Axis(0)).into_par_iter().enumerate().for_each(|(i, a)| {
        println!("{i} = {a:?}");
    });
}

如果要处理所有单个单元格,请考虑顺序迭代某个轴或多个轴,同时并行迭代另一个轴。

© www.soinside.com 2019 - 2024. All rights reserved.