Mi chiedo se qualcuno sa come vettorializzare l'hashing delle funzionalità in Python. Ad esempio, questo è il mio codice:Vettorizzazione dell'hash di feature in python
import numpy as np
hashlen = 5
x = np.array([4, 7, 4, 2, 6, 8, 0, 6, 3, 1])
h = np.array([0, 3, 1, 2, 4, 2, 1, 0, 3, 1])
In funzione hash h rappresenta gli indici del nuovo vettore sto hashing x a, cioè l'indice 0 del vettore hash dovrebbe avere 4 e 6 riassumere, Indice 1 dovrebbe avere 4, 0 e 1 riassumere, ecc Il vettore hash risultante dovrebbe essere:
w = np.array([ 10, 5, 10, 10, 6])
Un modo per fare questo è naturalmente dal ciclo attraverso gli indici hash, cioè:
for itr in range(hashlen):
w[itr] = np.sum(x[np.where(h==itr)])
Per i vettori di grandi dimensioni, la complessità è una funzione di hashlen (la lunghezza del vettore hash). Potrebbe richiedere troppo tempo, specialmente con un np.where() in esso.
voglio fare qualcosa di simile:
w = np.zeros(hashlen)
w[h]+= x
Tuttavia, il risultato di questo è lo stesso di fare
w = np.zeros(hashlen)
w[h] = x
Qualcuno può farmi sapere se mi manca qualcosa qui? O se c'è un modo "facile" di fare l'hashing delle caratteristiche che non comporta troppi calcoli?
Esattamente quello che stavo cercando. Grazie mille! –
Solo curioso - è possibile fare qualcosa del genere su matrici anziché su vettori? Senza looping ovviamente. –
Aggiornato per matrici. Ci sono altri modi se stai cercando qualcos'altro. – Daniel