Посчитайте все уникальные тройкиPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Посчитайте все уникальные тройки

Сообщение Anonymous »

Предположим, что у меня есть фрейм данных Pandas A со столбцами с именем user_id и историей, где история представляет собой массив целых чисел. А возможные истории ограничены сверху 2000. Мне нужно перебрать все строки A для каждой истории b = [b1, b2, b3, ..., bn]. Все bi уникальны (появляются в массиве только один раз). Мне нужно найти все возможные тройки (bi, bj, bk) такие, что i < j < k, и подсчитать вхождения всех таких троек. Кроме того, мы считаем тройку (bi, bj, bk) такой же, как (bj, bi, bk), если bi > bj.

Код: Выделить всё

import pandas as pd
from itertools import combinations

# Example DataFrame A (replace this with your actual DataFrame)
import pandas as pd
from collections import defaultdict

# Example DataFrame A (replace this with your actual DataFrame)
A = pd.DataFrame({
'user_id': [1, 2, 3],
'history': [[1, 2, 3], [2, 3, 4], [1, 3, 5]]
})

# Initialize a dictionary to store counts of triples
triple_counts = defaultdict(int)

# Iterate over each row of A
for index, row in A.iterrows():
history = row['history']
n = len(history)

# Iterate over all triples (bi, bj, bk) where i < j < k
for i in range(n):
for j in range(i + 1, n):
for k in range(j + 1, n):
bi = history[i]
bj = history[j]
bk = history[k]

if bi < bj:
triple_counts[(bi, bj, bk)] += 1
else:
triple_counts[(bj, bi, bk)] += 1

# Output the counts of all triples
for triple, count in triple_counts.items():
print(f"Triple {triple}: Count = {count}")
Проблема этого подхода заключается в том, что A представляет собой чрезвычайно большой фрейм данных, а сложность каждой строки равна O(n^3), поэтому выполнение этого вычисления занимает целую вечность. Есть ли более быстрый способ сделать это, используя операции pytorch или тензора?

Подробнее здесь: https://stackoverflow.com/questions/786 ... ue-triples
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Посчитайте все уникальные тройки
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Посчитайте все уникальные тройки
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Выведите список из предложения и посчитайте символы для каждого слова.
    Anonymous » » в форуме Python
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Посчитайте, сколько часов прошло с эпохи?
    Anonymous » » в форуме JAVA
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • C ++ STD :: Уникальные возвраты явно не уникальные результаты
    Anonymous » » в форуме C++
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»