我始终找不到方法将结果变成浮点型,如图
试过的方法有,用astype方法,用float,用.9f,均失败(难道是我用错了?)
具体代码:
import numpy as np
Z = np.random.randint(10,20,(5,5))
Max = Z.max()
Min = Z.min()
for m in range(len(Z)):
Z[m] = (Z[m]-Min)/(Max-Min)
print(Z)
所用Python版本为3.8版本
Z = Z.astype(float)
Z.astype(float)返回一个浮点数类型的结果。而这个astype不会修改Z本身。
import numpy as np
Z = np.random.randint(10,20,(5,5))
print(Z)
Z = Z.astype(float)
Max = Z.max()
Min = Z.min()
for m in range(len(Z)):
Z[m] = (Z[m]-Min)/(Max-Min)
print(Z)
问题在于你这个Z的类型是np.int, 而不是np.float, 所以后续的运算中都是int
再3和4中间插入一行
Z = np.array(Z, np.float)
即可,
另外, np有广播机制, 这个for循环完全可以省去. 和下面的代码效果是一样的, for循环反而慢
Z = (Z-Min)/(Max-Min)
简单的话,可以使用sklearn.preprocessing.MinMaxScaler。