因为作业要写到有效数字,然后也没怎么发现这方面的内容,所以记录一下方法!
什么是有效数字?
这里说一下在数学中的有效数字,即在一个数中,从该数的第一个非零数字起,直到末尾数字为止的数字。
一般说的保留几位有效数字,即从该数的第一个非零数字算起的。
例如:0.0789,这是保留了四位小数,但只保留了7、8、9这三位有效数字。
下面做个小练习叭!
数字 | 保留的有效数字位数 |
21000.0 | 6 |
0.009800 | 4 |
21.789 | 5 |
保留有效数字代码
这里用到的是Numpy中的函数:
np.format_float_positional(i, precision=7, unique=False, fractional=False, trim='k')
其中,i为原始的数据;
precision为保留的有效数字位数。
下面是一些代码示例。
数字
import numpy as np
num_list = [0.007787635, 23.48720]
for i in num_list:
print(np.format_float_positional(i, precision=7, unique=False, fractional=False, trim='k'))
0.007787635
23.48720
矩阵
import numpy as np
def valid_numbers(x):
"""
保留有效数字
:param x: 原始数字
:return: 保留有效位数后的数字
"""
x = float(np.format_float_positional(x, precision=5, unique=False, fractional=False, trim='k'))
return x
if __name__ == '__main__':
x = np.array([[0.53981, 0.71615, -0.55542, -6.29822],
[0.52579, 0.69242, 0.35655, -3.62552],
[0.64657, -0.81873, -0.18721, 0.12919],
[0.58145, 0.94004, -1.77794, -5.40422]])
vec_valid_numbers = np.vectorize(valid_numbers)
print(vec_valid_numbers(x))
[[ 0.53981 0.71615 -0.55542 -6.2982 ]
[ 0.52579 0.69242 0.35655 -3.6255 ]
[ 0.64657 -0.81873 -0.18721 0.12919]
[ 0.58145 0.94004 -1.7779 -5.4042 ]]
版权声明:本文为wincky3原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。