gpt4 book ai didi

multidimensional-array - ndarray是否存在assert_approx_eq?

转载 作者:行者123 更新时间:2023-12-03 11:44:35 25 4
gpt4 key购买 nike

我指的是ndarray crate 以及assert_approx_eq
我的问题:assert_approx_eq等是否存在类似ndarray::Array2的东西?
目前我正在做:

for it in mat_a.iter().zip(expect_mat_a.iter()) {
let (af, bf) = it;
assert_approx_eq!(af, bf);
}
这是可行的,但次优。

最佳答案

My question: Does something like assert_approx_eq exist for ndarray::Array2 etc.?


不会这么认为,这很具体,而且 ndarray似乎没有提供类似的功能。
for it in mat_a.iter().zip(expect_mat_a.iter()) {
let (af, bf) = it;
assert_approx_eq!(af, bf);
}

您应该能够通过将元组直接分解为迭代来简化一点:
for (af, bf) in mat_a.iter().zip(expect_mat_a.iter()) {
assert_approx_eq!(af, bf);
}

This is works, but is sub-optimal.


语法上?您可以将实现隐藏在自己的宏后面。基本上就是 assert_approx_eq所做的,没有什么神奇的,它只是提供了便利/便利的默认值,主要是在失败时会生成一个富有表现力的错误消息,如果您看一下 assert_approx_eq!($a, $b)只是不满意的话:
        let eps = 1.0e-6;
let (a, b) = (&$a, &$b);
assert!(
(*a - *b).abs() < eps,
"assertion failed: `(left !== right)` \
(left: `{:?}`, right: `{:?}`, expect diff: `{:?}`, real diff: `{:?}`)",
*a,
*b,
eps,
(*a - *b).abs()
);

关于multidimensional-array - ndarray是否存在assert_approx_eq?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64477025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com