我想计算阵列的平均值在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(矩阵的计算[矩阵的计算!=无])

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top