矩阵/ python中的最小值

时间:2016-11-18 22:42:25

标签: 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] , [6, 5, 10, 12, 15, 19]]


printMatrix(m)

3 个答案:

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