2015-02-17 12 views
9

Hmm. Non mi sembra un modo per immagazzinare i biginteger di Python in una serie numpy. C'è qualcosa di speciale che devi fare, dichiarare una matrice numpy con bigints?C'è un biginteger intorpidito?

risposta

12

Non specificamente, n. È possibile creare un array con dtype='object', che crea una matrice di oggetti Python (inclusi ma non limitati a ints). Questo ti farà avere molte funzionalità in stile Numpy ma pochi o nessuno dei benefici in termini di prestazioni.

Vale a dire, una matrice di oggetti Python non è significativamente diversa da Python list in termini di prestazioni della memoria. Anche se è necessario utilizzare bigints, potrebbe comunque essere preferibile utilizzare uno list poiché si continuano a ottenere operazioni aritmetiche element-wise, incluso quando si eseguono operazioni con altri array di Numpy. Per esempio:

In [1]: import numpy as np 

In [2]: big = np.array([10**100, 10**101, 10**102], dtype='object') 

In [3]: big 
Out[3]: 
array([ 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 
     100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 
     1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000], dtype=object) 

In [4]: big + np.array([1, 2, 3]) 
Out[4]: 
array([ 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001, 
     100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002, 
     1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003], dtype=object) 

non ho mai usato questa capacità me stesso, però, così non sono del tutto sicuro di quello che altri potrebbero sorgere limitazioni sorprendenti.

+0

Sembra funzionare bene. Ho giocato con i numeri di calcolo di Fibonacci usando matrici 'numpy' popolate con int e tutto funziona, comprese operazioni come' punto' e 'matrice_power'. – aickley

Problemi correlati