有人可以幫我嗎?我試圖讓每一行的最小值,該矩陣矩陣的每一行和每列的最小值 - Python
matrix =[[12,34,28,16],
[13,32,36,12],
[15,32,32,14],
[11,33,36,10]]
因此,例如,每列:我希望我的程序打印出12行1的最小值等。
有人可以幫我嗎?我試圖讓每一行的最小值,該矩陣矩陣的每一行和每列的最小值 - Python
matrix =[[12,34,28,16],
[13,32,36,12],
[15,32,32,14],
[11,33,36,10]]
因此,例如,每列:我希望我的程序打印出12行1的最小值等。
使用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)
array([12, 12, 14, 10])
>>> np.min(matrix, axis=0)
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)))
這兩種方法是完全等價的。
非常感謝您的解答!我非常感謝它。:) –
@ S.Troy,您隨時歡迎您! – ForceBru
你可以迭代明智和明智的列。並獲得每行和每列的最大值和最小值。首先嚐試獲得每行的最小值,然後是最大值。然後爲列明智地做它。 ATB :) –