大多数pythonic方式找到np.array列表中的最大元素?

时间:2014-04-05 17:08:23

标签: python numpy

我有一个np.arraymya = [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 m=len(mya[0]),我上面的代码确实有效,但似乎太乏味了。建议的方法是什么?

2 个答案:

答案 0 :(得分:2)

在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]

请参阅docs

答案 1 :(得分:0)

正如@Ruben_Bermudez所说,np.amax正是我所寻求的。

np.amax,提供的scipy文档here,接受类似数组的数据作为输入,并返回“沿轴的最大数组或最大值”。其可选参数之一是axis,它指定了沿其找到最大值的轴。

默认情况下,输入是平展的,所以

np.amax(mya) # => 50

指定axis=0

np.amax(mya,axis=0)  # np.array([30,50,5])

这就是我想要的。

抱歉这个烂摊子。