我有两个数组,都来自文本文件。通过观察,它们看起来完全一样。但是当我测试这两个数组的等价性时,它们失败了 - 在元素、形状等方面都不同。我使用了numpy test,答案在这里回答。
这是两个矩阵。
这是两个矩阵。
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))
,看看这是否能更清楚地显示这些值的差异。https://docs.python.org/3/library/functions.html#repr 试图打印“一个字符串,当传递给 eval() 时产生相同值的对象”。 - Patrick Fayraise
语句会中止方法的执行,对吧?因此,如果array_equal()
返回False
,就永远不会执行allclose()
。 - Nils Werner