我有一个numpy蒙面nd阵列。我需要找到沿着特定轴的中间值。对于某些情况,我最终得到偶数个元素,在这种情况下numpy.ma.median
给出中间两个元素的平均值。然而,我不想要平均值。我想要一个中间元素。两个人中的任何一个都可以。我怎么得到这个
MWE:
>>> import numpy
>>> data=numpy.arange(-5,10).reshape(3,5)
>>> mdata=numpy.ma.masked_where(data<=0,data)
>>> numpy.ma.median(mdata, axis=0)
masked_array(data=[5.0, 3.5, 4.5, 5.5, 6.5],
mask=[False, False, False, False, False],
fill_value=1e+20)
如您所见,它是平均(1
和6
)并提供分数值(3.5
)。我想要1
或6
中的任何一个
当元素数为偶数时,期望平均值。 假设您有一个从1到10的元素数组。平均值预计为5和6的平均值,即5.5。如果元素从1到11,则中位数为6。 希望这能澄清
对于偶数个元素,中位数返回两个中间数的平均值。但是,如果您不想要平均值,只想要两个中间数字中的一个,您可以从集合中删除一个元素,同时调用中间值方法,这将使集合的长度变为奇数,您将得到您想要的,而不是平均值(,尽管这不是找到中间值的正确方法)
numpy.percentile(array, 50)
给出中值李>numpy.percentile
有一个选项可以指定插值到nearest
李>numpy.ma
模块中没有此功能李>其思想是使用
nan
填充无效值,并使用numpy.nanpercentile()
和nearest
插值相关问题 更多 >
编程相关推荐