Python 在数组中查找行的最小或最大和

Python 在数组中查找行的最小或最大和,python,numpy,Python,Numpy,如何快速找到数组中一行元素的最小和或最大和 例如: 1, 2 3, 4 5, 6 7, 8 最小和为第0行(1+2),最大和为第3行(7+8) 您可以使用np.argmin和np.sum执行此操作: array_minimum_index = np.argmin([np.sum(x, axis=1) for x in mat]) array_maximum_index = np.argmax([np.sum(x, axis=1) for x in mat]) 对于您的数组,这将导致array

如何快速找到数组中一行元素的最小和或最大和

例如:

1, 2
3, 4
5, 6
7, 8
最小和为第0行(1+2),最大和为第3行(7+8)


您可以使用
np.argmin
np.sum
执行此操作:

array_minimum_index = np.argmin([np.sum(x, axis=1) for x in mat])
array_maximum_index = np.argmax([np.sum(x, axis=1) for x in mat])
对于您的数组,这将导致
array\u minimum\u index=0
array\u maximum\u index=7
,因为这些索引的总和是
-1404.55157
5566.0

要简单地打印最小和最大总和的值,可以执行以下操作:

array_sum_min = min([np.sum(x,axis=1) for x in mat])
array_sum_max = max([np.sum(x,axis=1) for x in mat])

假设x是4,2数组,则使用np.sum跨行求和,然后.min()返回数组的最小值,.max()返回本机Python中的最大值,
min
max
具有关键函数:

>>> LoT=[(1, 2), (3, 4), (5, 6), (7, 8)]
>>> min(LoT, key=sum)
(1, 2)
>>> max(LoT, key=sum)
(7, 8)
如果需要Python中第一个最小值或最大值的索引,可以执行以下操作:

>>> min(((i, t) for i, t in enumerate(LoT)), key=lambda (i,x): sum(x))
(0, (1, 2))
然后把那个元组剥开,得到你想要的。您也可以在numpy中使用它,但性能成本(对我来说)未知


在numpy中,您可以执行以下操作:

>>> a=np.array(LoT)
>>> a[a.sum(axis=1).argmin()]
array([1, 2])
>>> a[a.sum(axis=1).argmax()]
array([7, 8])
要仅获取索引,请执行以下操作:

>>> a.sum(axis=1).argmax()
3

您可以使用
min
max
并使用
sum
作为键

lst = [(1, 2), (3, 4), (5, 6), (7, 8)]

min(lst, key=sum) # (1, 2)
max(lst, key=sum) # (7, 8)
如果您直接想要求和,而不关心元组本身,那么
map
可能会有所帮助

min(map(sum, lst)) # 3
max(map(sum, lst)) # 15

数组是如何格式化的,您是否尝试过任何失败的方法?它是一个1×2 numpy数组的元组。我执行for循环并比较这些值以找到最小值和最大值对。我认为有一种更好、更“pythonic”的方法..对不起,你能发布用numpy格式化的确切数组吗?为什么不能使用4x2 numpy数组?你能解释一下你的代码而不是进行代码转储吗?谢谢假设x是4,2数组,则使用sum对行进行求和,然后.min()返回数组的最小值,.max()返回最大值
lst = [(1, 2), (3, 4), (5, 6), (7, 8)]

min(lst, key=sum) # (1, 2)
max(lst, key=sum) # (7, 8)
min(map(sum, lst)) # 3
max(map(sum, lst)) # 15