【发布时间】:2021-10-04 16:26:20
【问题描述】:
有没有简单的方法来计算一个向量在 rust 中的百分比变化?
还是我只是用 for 循环遍历这些值?
let vec1 = vec![90.0, 91.0, 85.0];
let pct_change = vec1.pct_change()
预期输出:
[NaN, 0.011111, -0.065934]
【问题讨论】:
-
当前元素和前一个元素之间的百分比变化。
有没有简单的方法来计算一个向量在 rust 中的百分比变化?
还是我只是用 for 循环遍历这些值?
let vec1 = vec![90.0, 91.0, 85.0];
let pct_change = vec1.pct_change()
预期输出:
[NaN, 0.011111, -0.065934]
【问题讨论】:
您可以使用windows() slice 方法迭代向量的 2 元素子切片:
let pct_change = vec1
.windows(2)
.map(|w| (w[1] - w[0]) / w[0])
.collect::<Vec<_>>();
tuple_windows()itertools crate 提供的另一种适用于任何可迭代对象的可能性:
let pct_change = vec1
.iter()
.tuple_windows()
.map(|(a, b)| (b - a) / a)
.collect::<Vec<_>>();
【讨论】: