2015-01-07 5 views
5

Ich stehe vor einem Problem mit dem intc Datentyp von numpy. Ich verwende ein Linux 64 Bit auf meinem Rechner. Ich muss eine scipy.sparse.csr_matrix mit Indizes jenseits der 32-Bit-Grenze instanziieren. Zum Beispiel:Wie man den intc Wert von numpy von 32 auf 64 bit ändert

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

Dieses gaves mich kein Problem:

ich eine csr Matrix wie das instanziiert haben. Dann irgendwo im Code, die ich tun, sagen wir mal:

matrix[0, 2401803431]=1 

Und ich habe ValueError: column index values must be >= 0. Ich debugge den Code und ich entdeckte, dass irgendwo in der Scipy-Implementierung von csr_matrix der Spaltenwert in den intc-Datentyp von numpy konvertiert wird. es um sicherzustellen, dass ein intc Problem, das ich mit dem folgenden Code geprüft:

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

diesen Wert 2^31-1 ist. Also, haben Sie einen Vorschlag, wenn es eine Möglichkeit gibt, von 32-Bit-Intc zu einem 64-Bit-Intc zu gehen? Auf dieser Seite http://docs.scipy.org/doc/numpy/user/basics.types.html es sagt, dass

intc Identical to C int (normally int32 or int64) 

Vielen Dank für Ihre Zeit!

Antwort

2

ich durch ein Upgrade scipy Bibliothek auf die neueste Version gelöst (zuvor hatte ich 1.3, jetzt 1.4)

+1

Ich glaube, Sie Sie 0,13-0,14 Upgrade bedeuten. –

Verwandte Themen