题
我想计算阵列的平均值在Python以这种形式:
Matrice = [1, 2, None]
我只是想有我None
值由numpy.mean
计算中忽略,但我无法弄清楚如何做到这一点。
解决方案
您正在寻找掩蔽阵列。下面是一个例子。
import MA
a = MA.array([1, 2, None], mask = [0, 0, 1])
print "average =", MA.average(a)
不幸的是,蒙面数组不彻底numpy的支持,所以你一定要环顾四周,看看有什么可以和不能与他们做。
其他提示
可以使用SciPy的为:
import scipy.stats.stats as st
m=st.nanmean(vec)
还没有使用numpy的,但在标准Python则可以使用列表解析滤除None
或过滤器功能
>>> [i for i in [1, 2, None] if i != None]
[1, 2]
>>> filter(lambda x: x != None, [1, 2, None])
[1, 2]
和然后平均该结果忽略None
您也许还可以用像NaN或天道酬勤值杂牌。
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])
事实上,它甚至可能不是一个杂牌。 维基说:
NaN的可用于表示在计算缺失值。
实际上,这并不对平均值()函数的工作,虽然如此,没关系。 :)
In [20]: mean([1, 2, NaN])
Out[20]: nan
您也可以使用过滤器,通过无给它,它会过滤非真物品,也为0,:d 因此,使用它时,你不需要太0
>>> filter(None,[1, 2, None])
[1, 2]
可以“向上转型”数组numpy的的float64 D型细胞,然后使用numpy的的nanmean方法如下面的示例:
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
np.mean(矩阵的计算[矩阵的计算!=无])
不隶属于 StackOverflow