我有以下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]])
如您所见,好像浮点数是四舍五入的。我想要的浮点数没有舍入,该如何解决?
答案 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]]