Numpy.median 将取您想要的任何轴上的中位数。因此,如果您可以将所有单独的数组放入一个数组中,您可以调用np.median() https://numpy.org/doc/stable/reference/generated/numpy.median.html并立即获取它们:
a = np.array([1,2,4,56,67,8,8,9]);
b = np.array([-1,-3,5,6,-7,-6,-8,0]);
c = np.array([1,2,3,4,5,6,7,8]);
d = np.stack([a, b, c])
np.median(d, axis = 0)
# array([1., 2., 4., 6., 5., 6., 7., 8.])
当然,如果你能直接制作50x240的数组而不需要循环,那就更好了。
让 NumPy 执行此操作与使用 Python 循环相比,时机非常引人注目:
l = [np.random.rand(240) for _ in range(50)]
def one(l):
return np.array(list(map(np.median, zip(*l))))
def two(l):
d = np.stack(l)
return np.median(d, axis = 0)
> %timeit one(l)
17 ms ± 1.17 ms per loop (mean ± std. dev. of 7 runs, 100 loops each)
> %timeit two(l)
456 µs ± 39.5 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each