从数组返回最大值而不是数字值

时间:2015-07-07 12:08:22

标签: python arrays numpy nan median

我有一个包含浮点值和NaN值的数组。我正在拿这个数组的中位数。在当前情景中,中位数可能是某个值或NaN。我的问题是,如果中位数是NaN,它应该从数组返回最大值而不是NaN。

数组示例

x = np.array([NaN,NaN,0.1,0.002,0.14,NaN,NaN,NaN])

在这个数组中,np.median是NaN。当中位数是NaN然后它应该从数组返回最大值,我的意思是它应该从数组返回(0.14)值。

如何返回此值?

2 个答案:

答案 0 :(得分:5)

import numpy as np
from numpy import NaN

x = np.array([NaN,NaN,0.1,0.002,0.14,NaN,NaN,NaN])

def getMedian(arr):
    med = np.median(arr)
    if np.isnan(med):
        return np.nanmax(arr)
    else:
        return med

print getMedian(x)

答案 1 :(得分:0)

对于任何操作,您需要排除NaN以获得您在创建第二个数组之后的答案,该数组仅包含相关值并使用该数组来查找答案。

workinglist = [] 对于x中的项目     if item!= NaN:         workinglist.append(项目)