高效的二维numpy数组统计

1 投票
3 回答
1810 浏览
提问于 2025-04-17 12:52

我有很多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)

撰写回答