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
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.
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