我一直在试图将各个元素从一个2D数组复制到另一个。我的代码如下:测试两个numpy二维数组的相等性
tp_matrix = np.array(tp_matrix)
my_array = np.empty(shape = (tp_matrix.shape))
for x in range(tp_matrix.shape[0]):
for y in range(tp_matrix.shape[1]):
my_array[x][y] = tp_matrix[x][y]
if(np.array_equal(my_array, tp_matrix)):
print('Equal')
else:
print('Not equal')
但是,两个数组由于某种原因不相等。这里有什么问题,我能做些什么来解决它?
我不能使用numpy的复制函数,因为我想稍后再对my_array中的某些元素进行修改,其他值与my_matrix的值相同。
编辑:在运行代码时,我收到以下消息: FutureWarning:elementwise comparison failed;返回标量,但将来会执行元素比较 这是否意味着数据集(tp_matrix)有问题?
编辑2:我已经尝试了allclose和isclose函数,但是我得到这个错误: TypeError:ufunc'isfinite'不支持输入类型,并且输入不能被安全地强制转换为任何支持的类型投射规则''安全'' 数据以浮点形式存储。它也有点大(399 x 5825)。
编辑3:解决。我不得不重新安装python。
元素是否漂浮?比较花车可以有这样的效果。尝试https://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.allclose.html#numpy.allclose。一般来说,永远不要测试花车的平等。 – JulienD
试着用'numpy.allclose()'来给你的平等句容忍一下。此外,如果您提供有关您的数据的更多信息(可能是示例)以及您打算如何处理它,可能会有解决方案来创建“最佳副本”。 – armatita
当我运行代码时,使用整数列表和浮点列表作为tp_matrix,我得到“Equal”。什么是你正在使用的tp_matrix? – 2016-04-24 19:50:48