Python:将带有 NaN 的 numpy 数组更改为带有数字和'--'的数组



我有一个numpy数组,有一些浮点数和一些nan:

a = [ 8.08970226  nan  nan  8.30043545  nan  nan   nan  nan]

我想把它转换成一个数组(用于在Latex中打印)到混合形式:

a = ['8.08970226', '--', '--', '8.30043545', '--', '--', '--', '--']

我想出的方法并不优雅,它是:

a=a.astype('|S10')
a[a=='nan']='--'
a=list(a)

是否有更优雅的方式来完成这项工作?(我可能会在第二行停止我的Latex需求。)

建议apreciated

使用numpy掩码数组

>>> import numpy as np
>>> a = np.array([ 8.08970226,  np.NAN,  np.NAN,  8.30043545,  np.NAN,  np.NAN,   np.NAN,  np.NAN])
>>> np.ma.fix_invalid(a)
masked_array(data = [8.08970226 -- -- 8.30043545 -- -- -- --],
             mask = [False  True  True False  True  True  True  True],
       fill_value = 1e+20)
>>> print _
[8.08970226 -- -- 8.30043545 -- -- -- --]

或者因为你需要它作为特定的列表:

>>> np.ma.fix_invalid(a).astype('|S10').tolist(fill_value='--')
['8.08970226', '--', '--', '8.30043545', '--', '--', '--', '--']

最新更新