Ich versuche eine Teilmenge aus einem numpy ndarray für mein kollaboratives Filterprojekt auszuwählen.Numpy WHERE IN gleich
Mein Array hat diese Form:
ratings = np.array(
[
(1, 2, 3.0),
(2, 2, 3.0),
(4, 1, 2.0),
(1, 2, 1.0),
],
dtype=[
('user_id', np.uint32),
('item_id', np.uint32),
('score', np.float32)
]
)
Nun, ich möchte eine Teilmenge der Bewertungen auszuwählen, in dem user_id auf ein Array gehört. Ähnlich wie SQL 'WHERE IN' Funktionalität.
Ich konnte dies np.in1d mit erreichen:
subset_of_users = [1, 2]
ratings[np.in1d(ratings['user_id'], subset_of_users)]
Meine Profilierung zeigen immer, dass die in1d mit Blöcken der langsamste sind, und es hat mir, dass vielleicht denken, es gibt eine schnellere Alternative, dies zu tun.
Vielen Dank für Ihre Zeit.
Danke für Ihre Antwort. max (user_id) ist ~ 150k. Mit diesem Code ging meine Funktion von 0,04s auf 0,17s :-( – fedeisas