📅  最后修改于: 2023-12-03 14:44:48.814000             🧑  作者: Mango
如果你经常使用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()函数设置一些选项,比如要显示的小数点后的位数等。例如:
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()函数将一个函数向量化,然后将它应用于数组中的每个元素。例如:
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()函数,两种方法各有优缺点,你可以根据自己的需要来选择合适的方法。