Python 找到矩阵中最大的元素
当提示输入矩阵中的多行,然后提示输入这些行的元素时,我需要找到该矩阵中最大的元素并返回其位置(行和列) 例如,如果我按如下方式输入两行: [1 3 7] [4 8 1] 最大元素的位置为(1,1),表示行索引1和列索引1 我有以下代码,用于获取位置:Python 找到矩阵中最大的元素,python,matrix,Python,Matrix,当提示输入矩阵中的多行,然后提示输入这些行的元素时,我需要找到该矩阵中最大的元素并返回其位置(行和列) 例如,如果我按如下方式输入两行: [1 3 7] [4 8 1] 最大元素的位置为(1,1),表示行索引1和列索引1 我有以下代码,用于获取位置: def main(): matrix = [] numRows = eval(input("Enter the number of rows in the list: ")) for i in range(numRows)
def main():
matrix = []
numRows = eval(input("Enter the number of rows in the list: "))
for i in range(numRows):
rows = input("Enter a row: ")
items = rows.split()
list = [eval(x) for x in items]
matrix.append(list)
return locateLargest(matrix)
def locateLargest(a):
for i in range(len(a)):
indexOfMaxRow = 0
maxRow = max(a[i])
for row in range(len(a)):
if max(a[row]) > maxRow:
maxRow = max(a[row])
indexOfMaxRow = row
for j in range(len(a)):
indexOfMaxColumn = 0
maxColumn = max(a[j])
for column in range(len(a)):
if max(a[column]) > maxColumn:
maxColumn = max(a[column])
indexOfMaxColumn = column
print("The location of the largest element is at (", indexOfMaxRow, ", ", indexOfMaxColumn, ")")
main()
我认为我的代码在
def locateLargest(a)
下是错误的,因为在打印结果之前一切都正常。有人能告诉我它有什么问题吗?提前感谢您的任何意见 您的locateLargest
功能可以简单得多:
def locateLargest(matrix):
largest_num = None
row = None
col = None
for row_idx, row in enumerate(matrix):
for col_idx, num in enumerate(row):
if num > largest_num or largest_num is None:
largest_num = num
row = row_idx
col = col_idx
return (largest_num, row, col)
此函数返回最大的数字以及列和行索引(基于0的索引)
例如:
>>> print(locateLargest([[1, 2, 3], [4, 5, 6], [7, 8, 9]]))
(9, 2, 2)
这太复杂了:
A = [[1, 3, 7],
[4, 8, 1]]
def max_element(A):
r, (c, l) = max(map(lambda t: (t[0], max(enumerate(t[1]), key=lambda v: v[1])), enumerate(A)), key=lambda v: v[1][1])
return (l, r, c)
print max_element(A)
印刷品
(8, 1, 1)
如果可以使用,则可以轻松找到数组中最大值的索引:
import numpy as np
na = np.array(a)
indices = np.where(na == na.max())
可能相关:非常感谢!我对它进行了调整并使用了print(),但它可以工作:)