NumPy数组,值为十进制精度后16位



在将两个变量转换为数组时,我试图保持计算字段的精度。当计算值时,它是<class 'numpy.float64'>的数据类型,当转换为数组时,它仍然是<class 'numpy.float64'>的数据类型,但是值从十进制后的16个数字-0.2484613592984996分别移动到十进制后的5个数字-0.24846

这是我使用的代码,我试图在创建数组时使用float来维护数据类型:

ham_log = np.log(ham / data_len)
spam_log = np.log(spam / data_len)
log_class_priors = np.array([ham_log, spam_log]).astype(float)

正如我在评论中解释的那样,数组的精度不会改变。改变的是打印值的方式。下面是一个例子:

import numpy as np
np.random.seed(0)
a = np.random.rand(2)
print(f'a = n{a}')

输出:

a = 
[0.5488135  0.71518937]

但是当我改变numpy的打印选项时,我得到的是:

np.set_printoptions(precision=16)
print(f'a = n{a}')

输出:

a = 
[0.5488135039273248 0.7151893663724195]

最新更新