gpt4 book ai didi

python - 无序复数浮点集的近似相等

转载 作者:行者123 更新时间:2023-11-28 17:43:45 26 4
gpt4 key购买 nike

我想对无序的复杂 float 的 numpy 数组进行 Nose 测试。

例如,如果

a = [1+1j, 1-1j, 2+2j, 2-2j, 2+2j, 2-2j]

b = [2+2j, 2-2j, 1+1j, 1.000000000000001-1j, 2+2j, 2-2j]

断言应该成功,因为它们具有大致相同的值相同的次数。顺序无关紧要。

对于常规 float ,assert_array_almost_equal(np.sort(a), np.sort(b)) 会很好,但这在这里不起作用,因为它先按实部排序,然后再按实部排序虚部,因此由于 float 错误,它们被排序为:

a: [ 1.-1.j,  1.+1.j,  2.-2.j,  2.-2.j,  2.+2.j,  2.+2.j]    
b: [ 1.+1.j, 1.-1.j, 2.-2.j, 2.-2.j, 2.+2.j, 2.+2.j]

有没有内置的方法来做到这一点?如果没有,我想我可以求助于 cplxreal 之类的东西,但这似乎需要添加到测试文件中。

最佳答案

如何按大小对数组进行排序?

def foo(a):
return a[np.argsort(a*a.conjugate())]
np.testing.assert_array_almost_equal(foo(a),foo(b))

关于python - 无序复数浮点集的近似相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20916066/

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