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

Cumulative Row Frequencies: นับความถี่สะสมของค่าเฉพาะในแต่ละแถว

แนวคิด

กำหนด matrix และลิสต์ค่าเป้าหมาย ให้คำนวณในแต่ละแถวว่า ค่าเป้าหมายแต่ละตัวปรากฏกี่ครั้ง แล้วรวมกันเป็นผลรวมต่อแถว

ตัวอย่างโค้ด

from collections import Counter

my_list = [
    [11, 2, 32, 4, 31],
    [52, 52, 3, 71, 71, 3],
    [1, 3],
    [19, 19, 40, 40, 40]
]
print("Matrix:", my_list)

my_element_list = [19, 2, 71]
print("ค่าเป้าหมาย:", my_element_list)

# Counter สำหรับแต่ละแถว
row_counters = [Counter(row) for row in my_list]

# นับความถี่ของค่าเป้าหมายในแต่ละแถว แล้วรวม
my_result = [
    sum(freq[val] for val in my_element_list if val in freq)
    for freq in row_counters
]

print("ผลรวมความถี่ต่อแถว:", my_result)

ผลลัพธ์

Matrix: [[11, 2, 32, 4, 31], [52, 52, 3, 71, 71, 3], [1, 3], [19, 19, 40, 40, 40]]
ค่าเป้าหมาย: [19, 2, 71]
ผลรวมความถี่ต่อแถว: [1, 2, 0, 2]

คำอธิบายแถวต่อแถว

  • แถว 0: มี 2 (1 ครั้ง) -> sum = 1
  • แถว 1: มี 71 (2 ครั้ง) -> sum = 2
  • แถว 2: ไม่มี 19, 2, 71 -> sum = 0
  • แถว 3: มี 19 (2 ครั้ง) -> sum = 2

ใช้ Pandas (ถ้าข้อมูลใหญ่)

import pandas as pd
df = pd.DataFrame(my_list)
target = [19, 2, 71]
result = df.apply(lambda row: row.isin(target).sum(), axis=1).tolist()