[英]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.