将一个numpy数组将元素四舍五入为非第一个零位数

问题描述 投票:0回答:3

我想通过以下方式“舍入”(不是精确的数学舍入)numpy数组的元素:

给出一个数字在0.00001到9.99999之间的numpy NxN或NxM 2D数组,例如

 a=np.array([[1.232, 1.872,2.732,0.123],
             [0.0019, 0.025, 1.854, 0.00017],
             [1.457, 0.0021, 2.34 , 9.99],
             [1.527, 3.3, 0.012 , 0.005]]
    )

我基本上希望通过选择每个元素的第一个非零数字(不管后面第一个非零数字后面的数字)来“舍入”这个numpy数组提供输出:

output =np.array([[1.0, 1.0, 2.0, 0.1],
                 [0.001, 0.02, 1.0, 0.0001],
                 [1.0, 0.002, 2 , 9.0],
                 [1, 3, 0.01 , 0.005]]
        )

感谢您的帮助!

python arrays numpy rounding
3个回答
0
投票

首先使用数组中的每个数字获得10的幂


0
投票

您可以使用np.logspacenp.seachsorted来确定每个元素的数量级,然后进行底数分割和相乘返回


0
投票

您想要做的是保持固定数量的significant figures

© www.soinside.com 2019 - 2024. All rights reserved.