Numpy矩阵与标量相乘会得到负零

  • 本文关键字:标量 Numpy python numpy
  • 更新时间 :
  • 英文 :


我有一个带有浮点的随机nxn矩阵A,然后我调用

X = np.eye(A.shape[0])

具有对角线值(其他地方为0(的矩阵nxn

1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1

现在我想把每偶数行乘以-2,所以我做

X[0::2] *= -2

但是它返回

2  0  0  0
-0 -2 -0 -0
0  0  2  0
-0 -0 -0 -2 

为什么零有负号?这有关系吗?如果有,有可能避免这种情况吗?谢谢

解决方案

正如有人指出的,np.eye函数默认返回浮点矩阵,通过添加np.eye(A.shape[0],dtype=int)来修复

解决方案

正如有人指出的,np.eye函数默认返回浮点矩阵,通过添加np.eye(A.shape[0],dtype=int)来修复

问题是,这些数字是float类型的,所以"0"实际上不是0,而是一个非常小的数字,所以当你把这个数字乘以-1时,你实际上乘以了一个可能是负数的小数字。你可以在这篇文章中了解到floas是如何存储在内存中的。

最新更新