[英]Multiplying elements of a matrix with an integer to create a new matrix
我有一个矩阵 M,为此我需要返回一个元组 (i,j),它为我提供矩阵中第一个最大值的索引(行、列)。
试过了,但给了我一个类型错误,即 int 不可迭代。
将非常感谢您在这方面的帮助/建议。
def matrix_max_index(M):
m=len(M)
n=len(M[0])
for i in range(0,m):
for j in range (0,n):
if M[i][j] == max(M[i][j]):
return (i,j)
例如:如果输入是M = [[0, 3, 2, 4], [2, 3, 5, 5], [5, 1, 2, 3]]
返回(1,2)
使用max
找到整体最大值,然后使用next
找到匹配它的第一个坐标:
def matrix_max_index(M):
# find the overall maximum
ma = max(e for row in M for e in row)
# find the first matching value
res = next((i, j) for i, row in enumerate(M) for j, e in enumerate(row) if e == ma)
return res
M = [[0, 3, 2, 4], [2, 3, 5, 5], [5, 1, 2, 3]]
print(matrix_max_index(M))
输出
(1, 2)
作为一种替代方法,使用 max 的关键参数将索引映射到其相应的值,并选择具有最大值的值:
def matrix_max_index(M):
rows = len(M)
cols = len(M[0])
res = max(((i, j) for i in range(rows) for j in range(cols)), key=lambda x: M[x[0]][x[1]])
return res
以下将起作用:
def matrix_max_index(M):
m_val = coords = None
for r, row in enumerate(M):
for c, val in enumerate(row):
if m_val is None or val > m_val:
m_val = val
coords = r, c
return coords
您必须跟踪当前最大值并根据需要更新最大值和坐标。 访问完所有单元格后,您只能在最后返回。
一些文档:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.