📌  相关文章
📜  numpy 数组删除科学记数法 - Python (1)

📅  最后修改于: 2023-12-03 14:44:48.814000             🧑  作者: Mango

numpy 数组删除科学记数法 - Python

如果你经常使用numpy数组,你可能会遇到科学记数法的问题,例如:

import numpy as np

a = np.array([1e-10, 1e-5, 1e-3, 1e-2, 1e-1, 1, 10, 100, 1000, 10000])
print(a)

输出结果为:

[  1.00000000e-10   1.00000000e-05   1.00000000e-03   1.00000000e-02
   1.00000000e-01   1.00000000e+00   1.00000000e+01   1.00000000e+02
   1.00000000e+03   1.00000000e+04]

这些数字使用科学记数法,可能不方便查看,我们可以使用一些方法去除它们。

方法一:使用numpy.set_printoptions()

我们可以使用numpy.set_printoptions()函数设置一些选项,比如要显示的小数点后的位数等。例如:

import numpy as np

a = np.array([1e-10, 1e-5, 1e-3, 1e-2, 1e-1, 1, 10, 100, 1000, 10000])
np.set_printoptions(precision=4, suppress=True)
print(a)

输出结果为:

[   0.       0.0001   0.001    0.01     0.1      1.      10.     100.
 1000.    10000.   ]

我们可以看到,所有的数字都变成了非科学计数法,且小数点后只显示了4位数。

方法二:使用np.vectorize()函数

我们可以使用np.vectorize()函数将一个函数向量化,然后将它应用于数组中的每个元素。例如:

import numpy as np

def remove_e(x):
    return '%f' % x

a = np.array([1e-10, 1e-5, 1e-3, 1e-2, 1e-1, 1, 10, 100, 1000, 10000])
b = np.vectorize(remove_e)(a)
print(b)

输出结果为:

['0.000000' '0.000010' '0.001000' '0.010000' '0.100000' '1.000000'
 '10.000000' '100.000000' '1000.000000' '10000.000000']

这种方法可能会稍微慢一些,但是它可以给你更多的控制,例如如果你想保留更多或者更少的小数位数,就可以在remove_e()函数中做出修改。

总结

如果你想从numpy数组中删除科学记数法,你可以使用numpy.set_printoptions()函数或者np.vectorize()函数,两种方法各有优缺点,你可以根据自己的需要来选择合适的方法。