我有一个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
m=len(mya[0])
,我上面的代码确实有效,但似乎太乏味了。建议的方法是什么?
答案 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])
这就是我想要的。
抱歉这个烂摊子。