我使用的是数值Python。不幸的是,NumPy不是一个选项。如果我有多个数组,例如:
a=Numeric.array(([1,2,3],[4,5,6],[7,8,9]))
b=Numeric.array(([9,8,7],[6,5,4],[3,2,1]))
c=Numeric.array(([5,9,1],[5,4,7],[5,2,3]))
如何返回一个数组,该数组表示数组a,b和c?...such的元素中值,
array(([5,8,3],[5,5,6],[5,2,3]))
然后看看更一般的情况:给定n个数组,如何找到每个元素的百分位数?例如,返回一个表示10个数组的第30个百分位数的数组。非常感谢您的帮助!
发布于 2012-04-01 20:17:33
将一堆2维数组组合成一个3维数组d = Numeric.array([a, b, c])
,然后按第三维排序。之后,连续的2-D平面将按等级排序,因此您可以提取低、高、四分位数、百分位数或中位数的平面。
发布于 2012-04-01 19:24:22
好吧,我不精通Numeric,但我将从一个简单的解决方案开始,看看我们是否可以让它变得更好。
要获得list foo
let x=0.3
的第30个百分位数,请对列表进行排序,然后选择foo[int(len(foo)*x)]
处的元素
对于您的数据,您希望将其放入矩阵中,对其进行转置,对每行进行排序,并获得每行的中位数。
Numeric中的矩阵(就像numpy一样)是一个二维数组。
我认为bar = Numeric.array(a,b,c)
会让数组成为你想要的,然后你可以用'bar:,n‘得到第n列,如果数值有和Numpy一样的切片技术的话。
foo = sorted(bar[:,n])
foo[int(len(foo)*x)]
我希望这对你有帮助。
发布于 2018-07-24 13:08:33
将Raymond Hettinger的描述放到python中:
a=Numeric.array(([1,2,3],[4,5,6],[7,8,9]))
b=Numeric.array(([9,8,7],[6,5,4],[3,2,1]))
c=Numeric.array(([5,9,1],[5,4,7],[5,2,3]))
d = Numeric.array([a, b, c])
d.sort(axis=0)
由于存在n=3输入矩阵,所以中位数将是中间的,以1为索引的中位数,
print d[n//2]
[[5 8 3]
[5 5 6]
[5 2 3]]
如果你有4个输入矩阵,你必须得到d1和d2的均值元素。
https://stackoverflow.com/questions/9967057
复制相似问题