我不知道如何在矩阵中找到最小值的索引,你能帮帮我吗?我没有在网上找到关于这个的任何事情
def printMatrix(matrix):
for i in matrix:
for j in i:
print(j, end=' ')
print()
m=[ [1, 1, 2, 5, 6, 1] , [5, 6, 8, 5, 6, 7] , [10, 12, 10, 12, 11, 11] , [8, 10, 5, 6, 8, 9] , [6, 5, 10, 12, 15, 19]]
printMatrix(m)
答案 0 :(得分:0)
首先,让我们制作一个样本矩阵:
import numpy as np
np.random.seed(100)
mat = np.random.rand(3, 3)
print(mat)
这是我们的矩阵:
[[ 0.54340494 0.27836939 0.42451759]
[ 0.84477613 0.00471886 0.12156912]
[ 0.67074908 0.82585276 0.13670659]]
然后,我们可以设置我们的初始“最小”测试值以及该值在矩阵中的位置:
min_val = mat[0][0]
min_idx = (0, 0)
接下来,我们可以遍历矩阵中的每一行,使用enumerate
来跟踪我们所在行的索引,并np.argmin
找到最小元素的索引。每一行:
for idx, row in enumerate(mat):
if min(row) < min_val:
min_val = min(row)
min_idx = (idx, np.argmin(row))
print(min_val, min_idx)
而且,瞧!最小值和索引是:
0.00471885619097 (1, 1)
答案 1 :(得分:0)
这会将2D数组转换为1D数组,然后找到最小值的索引。
def maxIndex(matrix):
matrix2 = []
for a in range(len(matrix)):
for b in range(len(matrix[a])):
matrix2.append(matrix[a][b])
val = -(10)^99
index = 10^99
for a in range(len(matrix2)):
if matrix2[a]<val:
val = matrix2[a]
index = a
return index
在本网站上提出有关Python的问题之前,您应该先学习Python的基础知识。我推荐这本书&#34; Hello World!&#34;卡特和沃伦桑德。
答案 2 :(得分:0)
如果您只需要第一次出现:
>>> minimum = min(map(min, m))
>>> for i, thing in enumerate(m):
try:
j = thing.index(minimum)
print('minimum is at m[{}][{}]'.format(i,j))
except ValueError as e:
pass
minimum is at m[0][0]
如果您需要所有出现的索引:
>>> minimum = min(map(min, m))
>>> for i, thing in enumerate(m):
for j, x in enumerate(thing):
if x == minimum:
print('minimum is at m[{}][{}]'.format(i,j))
minimum is at m[0][0]
minimum is at m[0][1]
minimum is at m[0][5]
>>>