直接使用dtype会强制改变数据类型,从而修改了数据值
import numpy as np
a = np.ones((1,2))
print(a, a.dtype)
a.dtype = 'float32'
print(a, a.dtype)
输出:
[[1. 1.]] float64
[[0. 1.875 0. 1.875]] float32
应该使用astype
a = a.astype(np.float32)
print(a, a.dtype)
输出:
[[1. 1.]] float32
(astype返回的是新变量,原变量没有改变,需要重新赋值,也就是a.astype(np.float32)并没有改变a的类型,而是返回了新的变量)