我有一个像下面这样的numpy数组:
data = [ 1.60130719e-01, 9.93827160e-01, 3.63108206e-04]
np.around(data,2) # doesn't work any alternatives ?
我想为上面的值得到2小数点。
我懂了 np.around
,它适用于单值但不适用于整个数组。
是否有一些容易在numpy中解决或者我是否需要使用np.around编写自己的函数?
最新情况:
数组不是np数组,导入后像np.array一样工作。
你可以使用:
np.round(data, 2)
要么:
np.around(data, 2)
像他们那样 当量。
从 文件:
numpy.around(a,decimals = 0,out = None)
均匀圆 a
到给定的小数位数。
您认为上述方法不起作用的原因是您导入的方式 numpy
。
从您的第一个示例开始,您似乎导入了:
from numpy import *
正如你所定义的那样 arrays
只是 array(...)
。但是,然后尝试使用 np.round(...)
!
您 必须 依照 importing
它与 *
或者作为 np
通过:
import numpy as np
如果您尝试在使用之间进行交换 np.some_func(...)
只是 some_func(...)
你会在某个时候抛出错误。您可能被其他答案或文档误导为 标准是使用 numpy
如 np
。
如果你想要输出
array([1.6e-01, 9.9e-01, 3.6e-04])
这个问题并不是NumPy的缺失特征,而是这种舍入不是标准的事情。您可以创建自己的舍入功能,如下所示:
def my_round(value, N):
exponent = np.ceil(np.log10(value))
return 10**exponent*np.round(value*10**(-exponent), N)
用于一般解决方案处理 0
和负值,你可以做这样的事情:
def my_round(value, N):
value = np.asarray(value).copy()
zero_mask = (value == 0)
value[zero_mask] = 1.0
sign_mask = (value < 0)
value[sign_mask] *= -1
exponent = np.ceil(np.log10(value))
result = 10**exponent*np.round(value*10**(-exponent), N)
result[sign_mask] *= -1
result[zero_mask] = 0.0
return result