Python将numpy数组项四舍五入到最接近的整数.我该怎么解决这个问题



请耐心等待,因为我对编码不是很有经验,但我的问题示例如下:

我将矩阵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

最新更新