要获得这段Python代码的Rust vec等价物,最惯用的方法是什么?
import numpy as np
a = np.arange(5)
a_diff = np.diff(a) # this is the thing I'm trying to emulate in Rust
print(a_diff) # [1 1 1 1]
我可以找出许多不令人满意的方法来完成这一任务,但我认为必须有一个使用iter()
的干净的一行程序方法,对吗?
let a: Vec<f64> = (0..5).collect::<Vec<i64>>().iter().map(|x| *x as f64).collect();
let a_diff = ???
2条答案
按热度按时间wztqucjr1#
如果您正在处理
Vec
,则可以使用windows
:如果只想使用迭代器,可以使用
scan
,但它更复杂:或者您可以使用
itertools
机箱中的tuple_windows
:iklwldmw2#
对于库存Rust,我会使用
windows
:(我还将不必要的集合移到了
Vec<i64>
中。)当夜间使用时,可以缩短为: