我有一个带有浮点的随机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是如何存储在内存中的。