1. 程式人生 > >【再回首Python之美】【矩陣】求矩陣中最大元素/最小元素的行列座標 For 層次聚類演算法Hierarchical Clustering Alg

【再回首Python之美】【矩陣】求矩陣中最大元素/最小元素的行列座標 For 層次聚類演算法Hierarchical Clustering Alg

求多維矩陣中最小元素的行列座標,這個在層次聚類演算法中用到,這裡實現記錄一下。

1.簡介

矩陣M:
 [[1 3 2]
 [2 6 0]
 [9 8 5]]

最大元素是9,對應的行列座標為(2,0)

最小元素是0,對應的行列座標是(1,2)

現在任務就是:輸入M,輸出最小/大元素的行列座標,程式碼如下所示:

2.code

# -*- coding: utf-8 -*-
"""
@author: 蔚藍的天空Tom
:計算矩陣中的最小元素,最大元素,以及對應的行列座標
"""

import numpy as np

def indmax_matrix(M):
    '''得到矩陣M中最大元素的行列座標'''
    row,col = divmod(np.argmax(M), np.shape(M)[1])
    return row,col
    
def indmin_matrix(M):
    '''得到矩陣M中最小元素的行列座標'''
    row,col = divmod(np.argmin(M), np.shape(M)[1])
    return row,col

if __name__=='__main__':
    M = np.array([[1,3,2],
                  [2,6,0],
                  [9,8,5]])
    print('矩陣:\n', M)
    print('矩陣中最大元素值:', np.max(M))
    print('矩陣中最小元素值:', np.min(M))
    print('矩陣中最大元素的行列座標:', indmax_matrix(M))
    print('矩陣中最小元素的行列座標:', indmin_matrix(M))

3.執行結果

runfile('C:/Users/tom/hierarchical_clustering.py', wdir='C:/Users/tom')
矩陣:
 [[1 3 2]
 [2 6 0]
 [9 8 5]]
矩陣中最大元素值: 9
矩陣中最小元素值: 0
矩陣中最大元素的行列座標: (2, 0)
矩陣中最小元素的行列座標: (1, 2)

(end)