import numpy as np
n=3
data=np.array([[100,2000,3],[400,5000,6],[700,8000,9]])
for j in range(n):
data_sum=data[:,j].sum()
for i in range(n):
data[i][j]=data[i][j]/data_sum
print(data)
得到结果如下:
[[0 0 0]
[0 0 0]
[0 0 0]]
解决方式:
将数组的数据类型设置为np.float16
,并且在除法运算时使用np.divide
,这可以提供更好的精度控制,避免由于下溢导致的精度丢失问题。
dtype=np.float16
data=np.array([[100,2000,3],[400,5000,6],[700,8000,9]],dtype=dtype)
成功得到数据如下:
[[0.0833 0.1333 0.1666]
[0.3333 0.3333 0.3333]
[0.5835 0.533 0.5 ]]