复制带有浮点数的numpy数组的值

时间:2019-11-13 10:43:36

标签: python numpy scikit-learn

我有以下numpy数组:

X = np.array([[1,2,3], [4,5,6], [7,8,9]])
y = np.array([[0.1,0.2,0.3], [0.4,0.5,0.743], [0.834,0.96,0.1]])

我正尝试使用以下命令将y中的某些列复制到X中:

X[:, [0,1]] = y[:, [0,1]]

但是,在打印X之后,我得到了:

In[20]: X
Out[20]: 
array([[0, 0, 3],
       [0, 0, 6],
       [0, 0, 9]])

如您所见,好像浮点数是四舍五入的。我想要的浮点数没有舍入,该如何解决?

1 个答案:

答案 0 :(得分:1)

x的dtype为int,因为它具有所有整数值,

因此只需在创建x时更改dtype即可,如下所示:

x = np.array([[1,2,3], [4,5,6], [7,8,9]], dtype=float)
y = np.array([[0.1,0.2,0.3], [0.4,0.5,0.743], [0.834,0.96,0.1]])

x[:, [0,1]] = y[:, [0,1]]

print(x)

输出:

[[0.1   0.2   3.   ]
 [0.4   0.5   6.   ]
 [0.834 0.96  9.   ]]

修改

或者,如果您不手动创建x,则按照@Arda Keskiner在注释中的建议使用:

x = x.astype(float)
x[:, [0,1]] = y[:, [0,1]]