如何在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-rand
是ndarray
板条箱的随机扩展,您的项目中需要ndarray
板条箱,因此您的Cargo.toml应该如下所示:
[dependencies]
ndarray-rand = "*" #todo select compatible version to ndarray vice-versa
ndarray = "*" #todo ...