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