簡體   English   中英

矩陣的每一行和每一列中的最小值-Python

[英]Minimum value in each row and each column of a matrix - Python

有人可以幫我嗎? 我正在嘗試獲取此矩陣的每一行和每一列的最小值

matrix =[[12,34,28,16],
        [13,32,36,12],
        [15,32,32,14],
        [11,33,36,10]]

因此,例如:我希望程序打印出第1行的最小值12,依此類推。

使用numpy。

>>> import numpy as np
>>> matrix =[[12,34,28,16],
...         [13,32,36,12],
...         [15,32,32,14],
...         [11,33,36,10]]
>>> np.min(matrix, axis=1) # computes minimum in each row 
array([12, 12, 14, 10])
>>> np.min(matrix, axis=0) # computes minimum in each column
array([11, 32, 28, 10])

讓我們重復任務語句:“獲取此矩陣的每一行每一列的最小值”。

好的,因此,如果矩陣有n行,則應該獲得n最小值, 每行一個 聽起來很有趣,不是嗎? 因此,代碼將如下所示:

result1 = [<something> for row in matrix]

那么,您需要對每一行做什么? 正確,找到最小值,這非常容易:

result1 = [min(row) for row in matrix]

result ,您將按預期獲得n值的列表。


等等,到目前為止,我們僅找到了每一行的最小值,但沒有找到每一的最小值,所以讓我們也這樣做吧!

假設您使用的是Python 3.x,則可以做一些非常棒的事情。 例如,您可以輕松地遍歷列:

result2 = [min(column) for column in zip(*matrix)] # notice the asterisk!

zip(*matrix)的星號使matrix的每一行成為zip的單獨參數,如下所示:

zip(matrix[0], matrix[1], matrix[2], matrix[3])

這看起來不太可讀,並且取決於matrix的行數(基本上,您必須對其進行硬編碼),而星號可讓您編寫更簡潔的代碼。

zip返回元組,第i個元組包含所有行的第i個值,因此這些元組實際上是給定矩陣的列。


現在,您可能會發現此代碼有點難看,您可能想以更簡潔的方式編寫相同的內容。 果然,您可以使用一些函數式編程魔術:

result1 = list(map(min, matrix))
result2 = list(map(min, zip(*matrix)))

這兩種方法是絕對等效的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM