当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python dask.array.around用法及代码示例


用法:

dask.array.around(x, decimals=0)

均匀四舍五入到给定的小数位数。

此文档字符串是从 numpy.around 复制的

可能存在与 Dask 版本的一些不一致之处。

参数

a数组(在 Dask 中不支持)

输入数据。

decimalsint 可选

要四舍五入的小数位数(默认值:0)。如果小数为负数,它指定小数点左侧的位数。

outndarray,可选(在 Dask 中不支持)

用于放置结果的替代输出数组。它必须具有与预期输出相同的形状,但如果需要,输出值的类型将被强制转换。有关更多详细信息,请参阅输出类型确定。

返回

rounded_arrayndarray

a 类型相同的数组,包含四舍五入的值。除非指定out,否则将创建一个新数组。返回对结果的引用。

复数的实部和虚部分别四舍五入。将浮点数舍入的结果是浮点数。

注意

对于恰好介于四舍五入的十进制值之间的值,NumPy 会四舍五入到最接近的偶数值。因此 1.5 和 2.5 舍入为 2.0,-0.5 和 0.5 舍入为 0.0,等等。

np.around 使用快速但有时不精确的算法来舍入浮点数据类型。对于正数 decimals ,它等效于 np.true_divide(np.rint(a * 10**decimals), 10**decimals) ,由于 IEEE 浮点标准 [1] 中小数部分的不精确表示以及按 10 的幂缩放时引入的错误,因此存在错误。例如,请注意以下额外的“1”:

>>> np.round(56294995342131.5, 3)  
56294995342131.51

如果您的目标是打印具有固定小数位数的此类值,则最好使用 numpy 的浮点打印例程来限制打印的小数位数:

>>> np.format_float_positional(56294995342131.5, precision=3)  
'56294995342131.5'

浮点打印例程使用精确但计算要求更高的算法来计算小数点后的位数。

或者,Python 的内置 round 函数对 64 位浮点值使用更准确但更慢的算法:

>>> round(56294995342131.5, 3)  
56294995342131.5
>>> np.round(16.055, 2), round(16.055, 2)  # equals 16.0549999999999997  
(16.06, 16.05)

参考

1

“关于 IEEE 754 状态的讲义”,William Kahan,https://people.eecs.berkeley.edu/~wkahan/ieee754status/IEEE754.PDF

例子

>>> np.around([0.37, 1.64])  
array([0., 2.])
>>> np.around([0.37, 1.64], decimals=1)  
array([0.4, 1.6])
>>> np.around([.5, 1.5, 2.5, 3.5, 4.5]) # rounds to nearest even value  
array([0., 2., 2., 4., 4.])
>>> np.around([1,2,3,11], decimals=1) # ndarray of ints is returned  
array([ 1,  2,  3, 11])
>>> np.around([1,2,3,11], decimals=-1)  
array([ 0,  0,  0, 10])

相关用法


注:本文由纯净天空筛选整理自dask.org大神的英文原创作品 dask.array.around。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。