我有一个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', '--', '--', '--', '--']