2015-01-07 7 views
5

Sono di fronte a un problema con il tipo di dati intc di numpy. Sto eseguendo un Linux 64 bit sulla mia macchina. Ho bisogno di istanziare una scipy.sparse.csr_matrix con indici oltre il limite di 32 bit. Per esempio:Come modificare il valore intc di numpy da 32 a 64 bit

ho istanziato una matrice CSR del genere:

matrix=csr_matrix((2, 4132009369),dtype=int8) 

Questo mi gaves nessun problema. Poi, da qualche parte nel codice che faccio, diciamo:

matrix[0, 2401803431]=1 

E ho avuto ValueError: column index values must be >= 0. Ho eseguito il debug del codice e ho scoperto che da qualche parte nell'implementazione di scsy di csr_matrix il valore della colonna viene convertito nel tipo di dati intc di numpy. Per assicurare che è un problema INTC ho controllato con il seguente codice:

>>> import numpy as np 
>>> info=np.iinfo(np.intc) 
>>> info.max 
2147483647 

che valore è 2^31-1. Quindi, avete qualche suggerimento se c'è un modo per passare da intc a 32 bit a intc a 64 bit? In questa pagina http://docs.scipy.org/doc/numpy/user/basics.types.html si dice che

intc Identical to C int (normally int32 or int64) 

La ringrazio molto per il vostro tempo!

risposta

2

ho risolto con l'aggiornamento della libreria SciPy alla versione più recente (in precedenza ho avuto 1.3, ora 1.4)

+1

Credo che si intende è stato aggiornato ,13-,14. –

Problemi correlati