2024-05-02 15:55:24 发布
网友
有人能帮帮我吗?我试图得到这个矩阵的每一行和每一列的最小值
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) # 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])
让我们重复任务语句:“获取矩阵的每行和每列的最小值”。在
如果每一行都有一个最小值。听起来很有趣,不是吗?所以,代码如下:
result1 = [<something> for row in matrix]
好吧,你每排要做什么?对,找到最小值,这非常简单:
作为result,您将得到一个n值的列表,正如预期的那样。在
result
n
等等,现在我们只找到了每一行的最小值,而不是每个列的最小值,所以我们也这样做吧!在
考虑到您使用的是python3.x,您可以做一些非常棒的事情。例如,您可以轻松地在列上循环:
result2 = [min(column) for column in zip(*matrix)] # notice the asterisk!
zip(*matrix)中的星号使matrix的每一行都成为zip的独立参数,如下所示:
zip(*matrix)
matrix
zip
zip(matrix[0], matrix[1], matrix[2], matrix[3])
这看起来不太可读,而且取决于matrix中的行数(基本上,您必须对它们进行硬编码),星号可以让您编写更简洁的代码。在
zip返回元组,第i个元组包含所有行的第i个值,因此这些元组实际上是给定矩阵的列。在
i
现在,您可能会发现这段代码有点难看,您可能希望以更简洁的方式编写相同的代码。当然,您可以使用一些函数式编程魔术:
result1 = list(map(min, matrix)) result2 = list(map(min, zip(*matrix)))
这两种方法完全相同。在
使用numpy。在
让我们重复任务语句:“获取矩阵的每行和每列的最小值”。在
如果每一行都有一个最小值。听起来很有趣,不是吗?所以,代码如下:
好吧,你每排要做什么?对,找到最小值,这非常简单:
^{pr2}$作为
result
,您将得到一个n
值的列表,正如预期的那样。在等等,现在我们只找到了每一行的最小值,而不是每个列的最小值,所以我们也这样做吧!在
考虑到您使用的是python3.x,您可以做一些非常棒的事情。例如,您可以轻松地在列上循环:
zip(*matrix)
中的星号使matrix
的每一行都成为zip
的独立参数,如下所示:这看起来不太可读,而且取决于
matrix
中的行数(基本上,您必须对它们进行硬编码),星号可以让您编写更简洁的代码。在zip
返回元组,第i
个元组包含所有行的第i
个值,因此这些元组实际上是给定矩阵的列。在现在,您可能会发现这段代码有点难看,您可能希望以更简洁的方式编写相同的代码。当然,您可以使用一些函数式编程魔术:
这两种方法完全相同。在
相关问题 更多 >
编程相关推荐