我有一个 numpy 数组,其中包含一些 float 和一些 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 要求。)
感谢您的建议
最佳答案
使用numpy
masked arrays
>>> 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', '--', '--', '--', '--']
关于Python:将带有 NaN 的 numpy 数组更改为带有数字和 '--' 的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16996541/