在嵌套列表中操作numpy数组

时间:2017-11-30 02:13:08

标签: python list numpy

我正在尝试在嵌套列表中操作numpy数组。

我有一个嵌套列表,在每个内部列表中,有几个numpy数组。

a = [
[np.random.normal(0,1,[2,3]), np.random.normal(0,1,[4,5]), np.random.normal(0,1, [9, 10])],
[np.random.normal(0,1,[2,3]), np.random.normal(0,1,[4,5]), np.random.normal(0,1, [9, 10])],
[np.random.normal(0,1,[2,3]), np.random.normal(0,1,[4,5]), np.random.normal(0,1, [9, 10])]
]

我希望以元素方式计算每个列表中每个numpy数组的平均值,以获得一个新列表b,其中元素是三个np.random.normal(0,1,[2,3])的平均值,即三个np.random.normal(0,1,[4,5])

我最初的想法是写下一个for循环来获取相应的数组并计算它们的平均值然后添加到列表中。但是,当拥有大量此类数组或内部列表时,这可能会有点慢。

1 个答案:

答案 0 :(得分:2)

我不确定这是否是你想要的,但这是一个潜在的解决方案:

epsilon

b = [np.mean(row, axis=0) for row in zip(*a)] 将嵌套列表重新排列为合理的格式,因此zip(*a)是大小相同的数组列表,row将在列表中获得元素方式。

你也可以将每一行变成一个numpy数组:

np.mean(row, axis=0)