首页 > 解决方案 > 如何找到矩阵中某个位置的相邻元素的最小元素

问题描述

我有一个 5x5 矩阵,我必须找到一个位置的最小相邻元素并将该最小数量添加到该位置......必须对矩阵中的所有元素执行此操作,但第一行和第一列除外。这是矩阵 A= [[1 1 2 2 3],[1 1 0 1 0],[2 0 1 0 1],[3 2 1 2 1],[4 0 1 0 1]]

标签: pythonmatrixmultidimensional-array

解决方案


将 numpy 导入为 np

a = [1,2,1,3,1] b = [2,1,2,1,2]

第一个矩阵

def get_matrix1(a,b): d = [] for x in a: for y in b: d.append(abs(yx))
return np.reshape(d,(5,5))

第二矩阵

def get_matrix2():

# Matrix 
m1 = get_matrix1(a,b)
print('First Matrix : {}'.format(m1))

# Cumulative Addition
m1[0] = np.cumsum(m1[0])
m1[:,0] = np.cumsum(m1[:,0])
m2 = m1.copy()
print('\nCumulative Addition Matrix : {}'.format(m2))

# Second Matrix
i_rows,j_cols = [0,1,2,3],[0,1,2,3]
edge_rows,edge_cols = [1,2,3,4],[1,2,3,4]

for i,row in zip(i_rows, edge_rows):
    for j,col in zip(j_cols, edge_cols):

        # old
        old = m2[row,col]
        print('\nOld : {}'.format(old))
        
        # edges 
        c,u,l = m2[i,j],m2[i,j+1],m2[i+1,j]
        r = (c,u,l)
        print('Edges : {}'.format(r))
        
        # new
        new = min(r) + old
        print('New : {}'.format(new))
        
        # update
        m2[row,col] = new
        print('Updated Matrix :')
        print(m2)
        

get_matrix2()


推荐阅读