Qualcuno ha già menzionato lo numpy
e l'OP ha commentato che "è tornato alla matematica dei puntatori fantasiosi con i C array" - questo è un dettaglio di implementazione assolutamente banale! Dato che la memoria sottostante in un (normale ;-) computer può essere vista come una matrice di byte (o parole), beh allora ovviamente qualsiasi struttura dati qualunque sia implementato in cima a quell'array (o sue porzioni) più "Fantasia puntatore matematico": code a doppio attacco, array multidimensionali, alberi binari, il nome, le implementazioni sottostanti si riducono sempre a quello (proprio come tutte le strutture di controllo fantasiose si riducono a salti condizionali e incondizionati a livello di macchina , e così via). SO COSA?! Questi sono i dettagli di implementazione , naturalmente. numpy
, proprio come Fortran e altri linguaggi e librerie, fornisce array N-dimensionali - non importa come li implementa "nel profondo" (in realtà numpy è piuttosto in voga, dato che puoi facilmente appiattire e rimodellare gli array - è piuttosto tipico di Python per fornire astrazioni di livello superiore con "ganci" piuttosto buoni su come si relazionano con quelli di livello inferiore ;-).
E.g.,
>>> import numpy
>>> x = numpy.arange(12)
>>> x
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
>>> x.reshape((3,4))
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
>>> x.reshape((4,3))
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])
>>> x.reshape((4,3))[::2, ::2]
array([[0, 2],
[6, 8]])
>>> x.reshape((4,3))[(0,1,3), ::2]
array([[ 0, 2],
[ 3, 5],
[ 9, 11]])
>>>
È possibile rimodellare, indice fetta e modellare i dati nella matrice N-dimensionale con elevata flessibilità e prestazioni eccellenti - pur sapendo che il blocco di dati di fondo è proprio questo array monodimensionale (qui x nasce e rimane 1-D, ma anche se così non fosse, è possibile ancora accedere all'array 1-D sottostante mediante l'appiattimento).
Questo è il "supporto per array N-dimensionale" significa (sebbene nella maggior parte degli altri linguaggi e framework che offrono tale supporto è possibile ottenere meno trasparenza, funzionalità ridotte o entrambi ;-).
Numpy utilizza le estensioni C in modo che torni alla matematica dei puntatori con gli array C. – Nope
Gli autori di numpy usano la matematica dei puntatori fantasiosi. Tu come utente non devi. –