[英]Most pythonic way to find the maximum elements out of list of np.array?
我有一个np.array
列表, mya = [a0,...,an]
(所有这些都具有相同的形状和dtype)。 假设ai
的形状为ai = array[xi0,xi1,..,xim]
。 我想得到
[max((a[i] for a in mya)) for i in range(m)]
。 例如,设x=np.array([3,4,5])
, y=np.array([2,50,-1])
和z=np.array([30,0,3])
然后对于mya = [x,y,z]
,我想要[30,50,5]
(或等于np.array
)。
通过m=len(mya[0])
给出m
,我上面的代码确实有效,但看起来太单调乏味了。 建议的方法是什么?
在numpy, numpy.amax(myarray)
给你最大的myarray
。 如果查找第一个dimmension的每个列表/数组的最大值,也可以设置所需的轴 。 在这种情况下,它应该是:
x=np.array([3,4,5])
y=np.array([2,50,-1])
z=np.array([30,0,3])
mya = [x,y,z]
maximum = np.amax(mya, axis=0)
# maximum will store a list as [maximumofx, maximumofy, maximumofz] -> [30,50,5]
查看文档
正如@Ruben_Bermudez所说, np.amax
就是我想要的。
np.amax
,提供SciPy的文档这里 ,接受一个数组状的数据作为输入,并返回“最大沿着轴线阵列或最大的”。 其可选参数中包括axis
,它指定了沿其找到最大值的轴。
默认情况下,输入是平坦的,所以
np.amax(mya) # => 50
指定axis=0
np.amax(mya,axis=0) # np.array([30,50,5])
这就是我想要的。
对不起这个烂摊子。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.