2

我有一个带有一些浮点数和一些 nans 的 numpy 数组:

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 要求,我可能会停在第二行。)

建议赞赏

4

1 回答 1

2

使用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', '--', '--', '--', '--']
于 2013-06-08T05:54:17.703 回答