矩阵/python中的最小值

矩阵/python中的最小值,python,arrays,matrix,min,Python,Arrays,Matrix,Min,我不知道如何在矩阵中找到最小值的索引,你能帮我吗?我在网上找不到关于这件事的任何消息 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] , [

我不知道如何在矩阵中找到最小值的索引,你能帮我吗?我在网上找不到关于这件事的任何消息

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)

首先,让我们制作一个示例矩阵:

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)

首先,让我们制作一个示例矩阵:

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)

这会将二维数组转换为一维数组,然后查找最小值的索引

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
def最大索引(矩阵):
matrix2=[]
对于范围内的(len(矩阵)):
对于范围内的b(len(矩阵[a]):
矩阵2.追加(矩阵[a][b])
val=-(10)^99
索引=10^99
对于范围内的(len(matrix2)):

如果matrix2[a]这将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
def最大索引(矩阵):
matrix2=[]
对于范围内的(len(矩阵)):
对于范围内的b(len(矩阵[a]):
矩阵2.追加(矩阵[a][b])
val=-(10)^99
索引=10^99
对于范围内的(len(matrix2)):

如果matrix2[a]如果您只需要第一次出现:

>>> 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]
>>> 

如果您只需要第一次出现:

>>> 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]
>>> 

您需要将矩阵展平为1D向量/列表,并找到该向量/列表的最小值。您可以使用内置的
min
函数来查找1D列表的最小值。环顾四周,了解如何将列表展平。欢迎访问。请审查并提供一份报告。你期望你的输出是什么?你尝试过什么?你想把你的矩阵展平成一维向量/列表,然后找到它的最小值。您可以使用内置的
min
函数来查找1D列表的最小值。环顾四周,了解如何将列表展平。欢迎访问。请审查并提供一份报告。你期望你的输出是什么?你尝试了什么?哎呀。你打败我了!或者,使用-
np.where(mat==mat.min())
Oops。你打败我了!或者,使用-
np.where(mat==mat.min())