在rust中创建随机二维数组



如何在rust中创建一个相当于numpy的随机2d数组:

np.random.rand(3, 2)
array([[0.81103811, 0.51529836],
[0.02255365, 0.28580315],
[0.97909856, 0.05897878]])

您可以使用ndarray rand机箱,它是rand和ndarray机箱的集成。

这是np.random.rand(3, 2)的等效代码

use ndarray::Array;
use ndarray_rand::{rand_distr::Standard, RandomExt};
fn main() {
println!("{:.4}", Array::<f64, _>::random((3, 2), Standard));
// Example Output:
//[[0.3762, 0.5176],
// [0.0949, 0.3432],
// [0.8329, 0.5704]]
}
  • Array::<f64, _>可以更改为不同类型,如CCD_ 3从u64集合中获取随机值
  • Uniform分布可用于获得自定义范围的灵活性
  • https://crates.io/crates/rand_distr由ndarray rand直接导出,您可以从这里实现概率分布:https://docs.rs/rand_distr/latest/rand_distr/#distributions,或者您可以实现自定义分发
  • RadnomExt还提供了类似sample_axis的功能来选择随机轴(对于numpy用户*;我相信这与numpy.random.Generator.choice类似(

依赖关系

由于ndarray-randndarray板条箱的随机扩展,您的项目中需要ndarray板条箱,因此您的Cargo.toml应该如下所示:

[dependencies]
ndarray-rand = "*" #todo select compatible version to ndarray vice-versa
ndarray = "*" #todo ... 

最新更新