高效的二维numpy数组统计
我有很多100x100的小网格,想知道有没有什么简单的方法可以用numpy来计算每个网格点的中位数,然后返回一个包含这些中位数的100x100网格。目前,我是用一个循环来逐个网格点计算中位数,最后再把它们合并成一个网格。我相信用numpy可以有更好的方法来做到这一点。希望能得到一些帮助!谢谢!
3 个回答
0
使用中位数的轴参数:
import numpy as np
data = np.random.rand(100, 5, 5)
print np.median(data, axis=0)
print np.median(data[:, 0, 0])
print np.median(data[:, 1, 0])
0
有多少个网格呢?
一种方法是创建一个三维数组,大小为100x100xnumGrids,然后在第三个维度上计算中位数。
6
创建一个100x100xN的数组(如果不行的话,可以把它们堆叠在一起),然后使用np.median
函数,并选择正确的轴,这样就可以一次性完成计算:
import numpy as np
a = np.random.rand(100,100)
b = np.random.rand(100,100)
c = np.random.rand(100,100)
d = np.dstack((a,b,c))
result = np.median(d,axis=2)