【问题标题】:how to find minimum element of adjacent elements of a position in a matrix如何找到矩阵中某个位置的相邻元素的最小元素
【发布时间】:2021-07-25 18:17:01
【问题描述】:

我有一个 5x5 矩阵,我必须找到一个位置的最小相邻元素并将该最小数量添加到该位置......必须对矩阵中的所有元素执行此操作,除了第一行和第 1 列。 这是矩阵 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]]

【问题讨论】:

  • 欢迎。这可能会帮助你。 stackoverflow.com/questions/15799261/… Afterwords 只是将您的数组划分为新定义的数组。它似乎有点过头了,但会完成这项工作
  • 我试过那个不行
  • 您能否发布您尝试的代码,以便我找出问题所在?我确实想节省时间,而不是自己实施。一般来说,这应该可以解决问题。
  • 这是一个很大的代码,你能分享你的邮件ID吗?我会把代码直接邮寄给你
  • 相邻是指上、下、左、右还是对角相邻的?

标签: python matrix multidimensional-array


【解决方案1】:

将 numpy 导入为 np

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

第一个矩阵

def get_matrix1(a,b): d = [] 对于 a 中的 x: 对于 b 中的 y: d.append(abs(y-x))
返回 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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-20
    • 2012-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-16
    • 1970-01-01
    相关资源
    最近更新 更多