Page 1 of 1

Optimale Funktion zum Scannen von Numpy -Matrix

Posted: 25 Aug 2025, 07:32
by Anonymous
Ich habe ein binäres 2D -Numpy -Array, das Transaktionen und Elemente darstellt. Für Punkt I (als Spalten dargestellt) möchte ich die Gesamtzahl der Transaktionen (als Zeilen dargestellt) berechnen, die diesen Artikel gekauft haben, alle Artikel, die neben Punkt I gekauft wurden, und alle Transaktionen, die diesen Artikel zugeordnet sind. Dies geschieht, um Unterstützung, Vertrauen und Heben zwischen den Gegenständen zu berechnen. Meine aktuelle Implementierung verwendet eine verschachtelte Schleife, dauert jedoch zu lange für einen großen Datensatz. Gibt es eine Möglichkeit, eine Matrix optimal zu scannen, wenn ich jedes Mal die Gesamtheit scannen muss? < /P>
Hier ist mein Code mit einem Beispielarray.

Code: Select all

import numpy as np
results = []
data = np.array([[0,1,0,1],[1,1,0,1],[0,0,0,1],[1,1,1,1]])
N = data.shape[0] #total transactions
for i in range(4): # for each item i
#transactions% where item i was purchased
mask_i = data[:,i] == 1
support_i = data[mask_i].shape[0]/N
for j in range(4): # check all items j
#transactions where both i and j are purchased
mask_j = data[:,j] == 1
support_j = data[mask_j].shape[0]/N #transactions% where j is purchased
mask_c = np.logical_and(mask_i,mask_j) # mask for where both i and j were purchased
confidence = (data[mask_c].shape[0]/N) / support_i
lift = confidence/support_j
results.append([i,j,confidence,lift]) #store combination
< /code>
Die Ergebnisliste zeigt jede identifizierte Kombination von Elementen mit anderen Elementen an. < /p>
[[0, 0, 1.0, 2.0], [0, 1, 1.0, 1.3333333333333333], [0, 2, 0.5, 2.0], [0, 3, 1.0, 1.0], [1, 0, 0.6666666666666666, 1.3333333333333333], [1, 1, 1.0, 1.3333333333333333], [1, 2, 0.3333333333333333, 1.3333333333333333], [1, 3, 1.0, 1.0], [2, 0, 1.0, 2.0], [2, 1, 1.0, 1.3333333333333333], [2, 2, 1.0, 4.0], [2, 3, 1.0, 1.0], [3, 0, 0.5, 1.0], [3, 1, 0.75, 1.0], [3, 2, 0.25, 1.0], [3, 3, 1.0, 1.0]]