Numpy数组循环

时间:2014-11-26 04:24:21

标签: python arrays numpy

我在python中对numpy仍然相当新,所以请放轻松我。我尝试过这些文档,但却无法理解它。

我有一个包含多个列表的数组。 ArrayABC = [[A1 B1 C1] [A2 B2 C2] [A3 B3 C3] ......]等......

第一个问题: 为了展平列表,我执行以下操作:

chain = itertools.chain(*ArrayABC.tolist())
Array_ABC=list(chain)

这是正确的方法吗?

第二个问题: 所以对于ArrayABC,我想找到A1,A2,A3的最大值,最小值和平均值......我似乎无法在不使用列表和附加A1,A2,A3的情况下找到一种方法... B1,B2,B3等...这减缓了一切:(这是做什么的正确方法?

谢谢!

2 个答案:

答案 0 :(得分:2)

我认为您正在尝试将您的np数组展平为单个列表。您可以将np数组视为常规python列表(有人请教育,我可能不完全正确)

所以你可以压扁像这样的列表列表::

[item for sublist in x for item in sublist]

你可以查看这篇文章,从平面列表中制作一个平面列表:

Making a flat list out of list of lists in Python

或者亚历克斯建议:

np.flatten()

您可以使用np.max()np.sum()np.mean()来解决问题二

例如

import numpy as np 
x = np.array([[1,2,3,4],[2,3,4,5]])

to find the max :

max_val = np.max(x, axis=0)
## returns array([2, 2, 3, 4])

min_val = np.min(x, axis=0)
## returns array([1, 2, 3, 4])

mean = np.mean(x, axis=0)
##returns array([ 1.5,  2. ,  3. ,  4. ])

答案 1 :(得分:1)

假设我们有一个5x5 numpy数组:

>>> a = np.arange(25).reshape((5, 5))
>>> a
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19],
       [20, 21, 22, 23, 24]])

展平阵列:

>>> b = a.flatten()
>>> b
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19, 20, 21, 22, 23, 24])

我们可以直接找到a

的最小值,最大值和平均值
>>> np.amin(a)
0

根据docs,默认情况下,np.amin会展开a

同样适用于最高和平均值:

>>> np.amax(a)
24
>>> np.mean(a)
12.0