请耐心等待,因为我对编码不是很有经验,但我的问题示例如下:
我将矩阵V定义如下,然后尝试按等于V:中第一个条目的因子缩放第一行
V=np.array([[3,1],[1,3]])
V[0]=V[0]/V[0,0]
print(V)
Output:
[[1 0]
[1 3]]
出于某种原因,Python已将缩放后的条目四舍五入到最接近的整数。另一个例子:
V=np.array([[3,1],[1,3]])
print(V[0]*1.8)
Output:
[5.4 1.8]
似乎没有问题,但当我将V的第一行赋值为缩放版本也会出现同样的问题。
V=np.array([[3,1],[1,3]])
V[0]=V[0]*1.8
Output:
[[5 1]
[1 3]]
预期输出:
[[5.4 1.8],
[1 3]]
显然,输出应该将[5.4 1.8]
作为第一行,但Python已将每个条目四舍五入到最接近的整数。
Python为什么要这么做?我做错了什么?
问题完全概述在上面,这里不多说。
谢谢,
James
这是因为您的numpy数组是int
。numpy数组中的所有元素都必须是相同的类型。因此,当您将数组乘以float
时,该数组将保持为int
(无小数(
您需要先将数组转换为float
,以便获得所需的输出。
V=np.array([[3,1],[1,3]]).astype('float')
V[0]=V[0]*1.8