How to use numpy with 'None' value in Python?

后端 未结 7 2355
甜味超标
甜味超标 2020-12-18 18:14

I\'d like to calculate the mean of an array in Python in this form:

Matrice = [1, 2, None]

I\'d just like to have my None valu

相关标签:
7条回答
  • 2020-12-18 18:28

    You can 'upcast' the array to numpy's float64 dtype and then use numpy's nanmean method as in the following example:

    import numpy as np
    
    arr = [1,2,3, None]
    arr2 = np.array(arr, dtype=np.float64)
    print(arr2) # [ 1.  2.  3. nan]
    print(np.nanmean(arr2)) # 2.0
    
    0 讨论(0)
  • 2020-12-18 18:31

    You can also use filter, pass None to it, it will filter non True objects, also 0, :D So, use it when you dont need 0 too.

    >>> filter(None,[1, 2, None])
    [1, 2]
    
    0 讨论(0)
  • 2020-12-18 18:34

    np.mean(Matrice[Matrice != None])

    0 讨论(0)
  • 2020-12-18 18:35

    haven't used numpy, but in standard python you can filter out None using list comprehensions or the filter function

    >>> [i for i in [1, 2, None] if i != None]
    [1, 2]
    >>> filter(lambda x: x != None, [1, 2, None])
    [1, 2]
    

    and then average the result to ignore the None

    0 讨论(0)
  • 2020-12-18 18:39

    You might also be able to kludge with values like NaN or Inf.

    In [1]: array([1, 2, None])
    Out[1]: array([1, 2, None], dtype=object)
    
    In [2]: array([1, 2, NaN])
    Out[2]: array([  1.,   2.,  NaN])
    

    Actually, it might not even be a kludge. Wikipedia says:

    NaNs may be used to represent missing values in computations.

    Actually, this doesn't work for the mean() function, though, so nevermind. :)

    In [20]: mean([1, 2, NaN])
    Out[20]: nan
    
    0 讨论(0)
  • 2020-12-18 18:46

    You can use scipy for that:

    import scipy.stats.stats as st
    m=st.nanmean(vec)
    
    0 讨论(0)
提交回复
热议问题