Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Tổng các phần tử ma trận trừ hàng và cột của ô cho trước trong Python


Cho ma trận 2D và tập hợp chỉ số ô (i,j). Với mỗi ô, tính tổng tất cả phần tử trừ các phần tử ở hàng i và cột j.

Ví dụ: mat=[[2,2,3],[4,5,7],[6,4,3]], indices=[(0,0),(1,1),(0,1)] → [19,14,20].

Giải thuật

  • Tính tổng toàn bộ ma trận.
  • Tính tổng mỗi hàng và mỗi cột.
  • Với ô (i,j): kết quả = tổng_toàn_bộ - tổng_hàng_i - tổng_cột_j + mat[i][j] (vì mat[i][j] bị trừ 2 lần).

Ví dụ

def show_sums(mat, ind_arr):
    total = sum(sum(row) for row in mat)
    row_sums = [sum(row) for row in mat]
    col_sums = [sum(mat[i][j] for i in range(len(mat))) for j in range(len(mat[0]))]
    ans = []
    for r, c in ind_arr:
        s = total - row_sums[r] - col_sums[c] + mat[r][c]
        ans.append(s)
    return ans

mat = [[2, 2, 3], [4, 5, 7], [6, 4, 3]]
ind_arr = [(0, 0), (1, 1), (0, 1)]
print(show_sums(mat, ind_arr))

Đầu vào

mat = [[2, 2, 3], [4, 5, 7], [6, 4, 3]] ind_arr = [(0, 0),(1, 1),(0, 1)]

Đầu ra

[19, 14, 20]