我正在用Rust编写一个Python模块,使用的是Py03.在其中一个Rust函数中,我调用了一个python函数my_py_func
,该函数返回一个numpy.ndarray
,其中包含dtype=int64
个条目,对于某些动态确定的k
,返回shape=(k,2)
个条目.
我的铁 rust 代码是这样的.
let my_py_func_rs = PyModule::import(py, "__main__").unwrap().getattr("my_py_func").unwrap().into();
// input argument to the python function
// my_input_array is a ndarray::Array1<u8>
let args = PyTuple::new(py, &[my_input_array.into_pyarray(py)]);
let output_array: Vec<Vec<usize>> = my_py_func_rs.call1(py, args).unwrap().extract(py).unwrap();
这很管用!按预期进行编译和运行.
但我有一种感觉,使用向量的向量作为数据 struct 是不正确的,也不是最优的.我想对output_array
执行的后续操作是遍历各行,并根据每行执行一些操作.我想提取每一点性能,因为最终的代码将运行数天/数周.
用Array2
会更快吗?我不能测试这一点,因为我不知道如何将python函数输出转换为Array2
.我还在代码中的其他地方使用了numpy crate,如果这是相关的.
对于output_array
来说,最快的数据 struct 是什么?