我在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等...这减缓了一切:(这是做什么的正确方法?
谢谢!
答案 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