Quindi, ho elenchi di parole e ho bisogno di sapere ogni quanto ogni parola appare su ogni lista. L'uso di ".count (word)" funziona, ma è troppo lento (ogni elenco ha migliaia di parole e ho migliaia di elenchi).Posso ingannare numpy.histogram in comportamenti come numpy.bincount?
Ho cercato di velocizzare le cose con Numpy. Ho generato un codice numerico univoco per ogni parola, quindi potrei usare numpy.bincount (dato che funziona solo con numeri interi, non con stringhe). Ma ottengo "ValueError: array è troppo grande".
Così ora sto cercando di modificare l'argomento "bin" della funzione numpy.histogram per fare in modo che restituisca i conteggi di frequenza di cui ho bisogno (in qualche modo numpy.histogram sembra non avere problemi con i big array). Ma finora non va bene. Qualcuno là fuori succede di averlo fatto prima? È possibile? C'è una soluzione più semplice che non riesco a vedere?
Quanto è grande il tuo array !? Ho appena usato bincount con un array di lunghezza di 10000000 e ha funzionato bene. Ho esaurito la memoria prima di ottenere l'errore che fai. –
Penso che il problema riguardi il tuo sistema di codice numerico univoco, non la dimensione degli array iniziali. np.bincount creerà una matrice di lunghezza pari a 1 + il numero intero più grande dell'array, il che, se stai usando una sorta di codifica con numeri ridicolmente grandi, potrebbe causare un problema. Tuttavia, non ho avuto problemi con np.bincount ([1000000000]). Qual è il tuo schema di codifica numerica? – cge
Ah sembra che l'errore si verifica quando sei interi che stai cercando di bin sono enormi. Puoi emularlo con 'foo = numpy.random.randint (2 ** 62, size = 1000); numpy.bincount (foo) '. Immagino che stia cercando di creare un enorme array non indicizzabile per memorizzare tutti i bin e numpy sta dicendo no (quell'errore è in 'multiarray/ctors.c'). Quante parole hai? –