Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ค้นหาผลรวมขององค์ประกอบทั้งหมดในเมทริกซ์ ยกเว้นองค์ประกอบในแถวและ-หรือคอลัมน์ของเซลล์ที่กำหนดใน Python


สมมติว่าเรามีเมทริกซ์ 2 มิติและชุดดัชนีเซลล์ ดัชนีเซลล์แสดงเป็น (i, j) โดยที่ i คือแถวและ j คือคอลัมน์ ตอนนี้ สำหรับทุกดัชนีเซลล์ที่ระบุ (i, j) เราต้องหาผลรวมขององค์ประกอบเมทริกซ์ทั้งหมด ยกเว้นองค์ประกอบที่อยู่ในแถวที่ ith และ /หรือคอลัมน์ที่ j.

ดังนั้นหากอินพุตเป็นแบบ

2 2 3
4 5 7
6 4 3

ดัชนีเซลล์ =[(0, 0), (1, 1), (0, 1)] จากนั้นผลลัพธ์จะเป็น [19, 14, 20]

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • n :=ขนาดของ ind_arr

  • ans :=รายการใหม่

  • สำหรับผมอยู่ในช่วง 0 ถึง n ทำ

    • ผลรวม :=0

    • แถว :=ind_arr[i, 0]

    • col :=ind_arr[i, 1]

    • สำหรับ j ในช่วง 0 ถึงแถวนับเสื่อ ทำ

      • สำหรับ k ในช่วง 0 ถึงจำนวนคอลัมน์ของแผนที่ ทำ

        • ถ้า j ไม่เหมือนกับแถว และ k ไม่เหมือนกับ col แล้ว

          • ผลรวม :=ผลรวม + mat[j, k]

    • ใส่ Sum ที่ท้าย ans

  • กลับมาอีกครั้ง

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

def show_sums(mat, ind_arr):
   n = len(ind_arr)
   ans = []
   for i in range(0, n):
      Sum = 0
      row = ind_arr[i][0]
      col = ind_arr[i][1]
      for j in range(0, len(mat)):
         for k in range(0, len(mat[0])):
            if j != row and k != col:
               Sum += mat[j][k]
      ans.append(Sum)
   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))

อินพุต

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

ผลลัพธ์

[19, 14, 20]