【发布时间】:2020-01-11 21:17:18
【问题描述】:
我有两个来自文本文件的数组。通过观察,它看起来完全一样。然而,当我测试两个数组的等价性时,它们失败了——元素方面、形状方面等等。我使用了 numpy 测试回答了here。
这是两个matrices。
import numpy as np
class TextMatrixAssertions(object):
def assertArrayEqual(self, dataX, dataY):
x = np.loadtxt(dataX)
y = np.loadtxt(dataY)
if not np.array_equal(x, y):
raise Exception("array_equal fail.")
if not np.array_equiv(x, y):
raise Exception("array_equiv fail.")
if not np.allclose(x, y):
raise Exception("allclose fail.")
dataX = "MyMatrix.txt"
dataY = "MyMatrix2.txt"
test = TextMatrixAssertions()
test.assertArrayEqual(dataX, dataY)
我想知道这两个数组之间是否真的存在一些差异,或者如果没有,是什么导致了失败。
【问题讨论】:
-
大概打印您的值会使它们看起来相同?我会尝试做一个
print(repr(x))和print(repr(y)),看看是否可以更清楚地了解这些值的不同之处。 docs.python.org/3/library/functions.html#repr 尝试打印“传递给 eval() 时会产生具有相同值的对象的字符串” -
您确实意识到您的
raise语句中止了您的方法的执行,对吧?因此,如果array_equal()返回False,则永远无法到达allclose()。 -
是的,我评论其他人以检查其他人。
标签: python arrays numpy matrix