How to inverse N x M matrix in Python

2 Answers

0 votes
def print_matrix(matrix):
    rows = len(matrix)
    cols = len(matrix[0])

    for i in range(rows):
        row = ""
        for j in range(cols):
            # pad each number to width 4
            row += f"{matrix[i][j]:4}"
        print(row)


def inverse_matrix(matrix):
    rows = len(matrix)
    cols = len(matrix[0])
    counter = 0

    r = rows - 1
    for i in range(rows):
        c = cols - 1
        for j in range(cols):
            # swap values
            matrix[i][j], matrix[r][c] = matrix[r][c], matrix[i][j]

            counter += 1
            if counter > (rows * cols) // 2 - 1:
                return
            c -= 1
        r -= 1


def main():
    matrix = [
        [1, 2, 3, 4],
        [5, 6, 7, 8],
        [9, 10, 11, 12]
    ]

    print("matrix:")
    print_matrix(matrix)

    inverse_matrix(matrix)

    print("\ninverse matrix:")
    print_matrix(matrix)


if __name__ == "__main__":
    main()



'''
run:

matrix:
   1   2   3   4
   5   6   7   8
   9  10  11  12

inverse matrix:
  12  11  10   9
   8   7   6   5
   4   3   2   1

'''

 



answered 1 day ago by avibootz
0 votes
def print_matrix(matrix):
    for row in matrix:
        print("".join(f"{val:4}" for val in row))


def inverse_matrix(matrix):
    # Flatten the matrix, reverse it, then rebuild
    flat = [val for row in matrix for val in row][::-1]
    
    rows, cols = len(matrix), len(matrix[0])
    for i in range(rows):
        matrix[i] = flat[i*cols:(i+1)*cols]


def main():
    matrix = [
        [1, 2, 3, 4],
        [5, 6, 7, 8],
        [9, 10, 11, 12]
    ]

    print("matrix:")
    print_matrix(matrix)

    inverse_matrix(matrix)

    print("\ninverse matrix:")
    print_matrix(matrix)


if __name__ == "__main__":
    main()



'''
run:

matrix:
   1   2   3   4
   5   6   7   8
   9  10  11  12

inverse matrix:
  12  11  10   9
   8   7   6   5
   4   3   2   1

'''

 



answered 1 day ago by avibootz
...