两个数组raw_document_scores
和raw_doc_scores1 are equal
,由raw_document_scores==raw_doc_scores1
证明返回所有真实数组。但是,当我检查是否
raw_document_scores/np.linalg.norm(raw_document_scores, 1, axis=1).reshape(-1,1) \
== raw_doc_scores1/np.linalg.norm(raw_doc_scores1, 1, axis=1).reshape(-1,1)
我对某些条目有误。我减去了两个数组以查看每个条目的差异,并且它小于e-18,所以它们大致相等。但是,如果输入数组完全相等,为什么它们不完全相等?前两个数组实际上是不相等的吗?当python / numpy表示所有条目都相等时,它们是否在说谎?这是一张显示发生的事情的图片。
答案 0 :(得分:1)
由于您没有提供有关输入数据的任何详细信息,唯一的方法是给出答案是猜测实际上哪些是错误的。这是一个与你相匹配的场景;在64位Python上生成:
>>> A = np.array(np.random.random([10, 3])*10, dtype=int)
>>> B = np.array(A, dtype='float32')
>>> A == B
array([[ True, True, True],
[ True, True, True],
[ True, True, True],
[ True, True, True],
[ True, True, True],
[ True, True, True],
[ True, True, True],
[ True, True, True],
[ True, True, True],
[ True, True, True]])
>>> np.linalg.norm(A, axis=1) == np.linalg.norm(B, axis=1)
array([False, False, False, False, False, False, False, True, False,
False])
我猜这是raw_document_scores
和raw_doc_scores1
之间不匹配的数据类型。供参考:
>>> C = np.copy(A)
>>> np.linalg.norm(A, axis=1) == np.linalg.norm(C, axis=1)
array([ True, True, True, True, True, True, True, True, True,
True])