gpt4 book ai didi

python - 查找多个 NumPy 数组的中值

转载 作者:行者123 更新时间:2023-12-03 23:20:28 24 4
gpt4 key购买 nike

我有一个创建大约 50 个数组的 for 循环。数组的长度为 240。我试图找出计算数组每个元素的中值的最佳方法。本质上,我想取循环中创建的每个数组的第一个元素,将它们放入一个列表中,然后找到中位数。然后对其他 239 个元素执行相同操作。像这样的事情就是我在想的

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 = []

d.append(a[0])

d.append(b[0])

d.append(c[0])

d
Out[62]: [1, -1, 1]

np.median(d)
Out[65]: 1.0

最佳答案

Numpy.median 将在您想要的任何轴上取中位数。因此,如果您可以将所有单个数组放入一个数组中,则可以调用 np.median() 并立即获取它们:

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

关于python - 查找多个 NumPy 数组的中值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62926893/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com