小数点后 16 位数值的 NumPy 数组
NumPy array with values of 16 digits after the decimal precision
我试图在将两个变量转换为数组时保持计算字段的精度。计算值时它是 <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]
我试图在将两个变量转换为数组时保持计算字段的精度。计算值时它是 <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]