擅长:python、mysql、java
<p>如果你想输出</p>
<pre><code>array([1.6e-01, 9.9e-01, 3.6e-04])
</code></pre>
<p>问题并不是缺少NumPy的特性,而是这种舍入不是一种标准的做法。您可以创建自己的舍入函数,实现如下目的:</p>
<pre><code>def my_round(value, N):
exponent = np.ceil(np.log10(value))
return 10**exponent*np.round(value*10**(-exponent), N)
</code></pre>
<p>对于处理<code>0</code>和负值的一般解决方案,您可以执行以下操作:</p>
<pre><code>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
</code></pre>