Mi piacerebbe vettorizzare alcune operazioni su array che non sono effettivamente disponibili in ndarray o pandas dataframes / series, come ad esempio confrontare due array / serie / frame di una forma simile, uno di questi contenente un valore e l'altro uno una lista. Posso scrivere la mia struttura dati in Python che usa la vettorizzazione? Come posso chiamare metodi dalla libreria generale che vettorializzare, o usare le funzioni fondamentali per fare questo? Non c'è modo di vectorize in Python senza fare affidamento su Fortran / C quindi su SciPy / NumPy / Pandas e simili librairie? Non capisco perché Python da solo non sarebbe in grado di gestire array come C, in realtà? È "impossibile per concezione" o semplicemente non è fatto perché gli offload sono migliori?
Ad esempio, la vettorizzazione viene eseguita quando si aggiungono due array in numpy come ndarray_1 ([1,2,3]) e ndarray_2 ([3,2,6]) che daranno ndarray_3 ([4,4,9] ) in un solo passaggio, e non c'è un loop invisibile, in realtà tutte le operazioni avvengono in un unico passaggio in memoria. Mi piacerebbe sapere in che misura il codice funziona in modo così vettoriale in python (senza usare numpy, per la mia illuminazione).
Analogamente a quanto descritto sopra, sarebbe particolarmente utile per me sapere che come so ci sono funzioni che sfruttano le proprietà delle parole speciali è e in, come isin in panda, che confrontano un'intera serie per vedere se i singoli elementi sono contenuti nell'iteratore fornito. Purtroppo, se ho un array di liste, devo usare un loop per passare sopra questo array per fornire in sequenza l'iteratore da confrontare in "isin". Questo non va bene per la mia applicazione.
Altri casi d'uso eliminerebbero funzioni come la mappa e l'applicazione, che sono mascherate da cicli con ottimizzazioni, per andare verso la vera vettorizzazione. Come applicare in un round su una serie o frame, element wise, il test del tipo di istanza (isinstance), funziona in base a una formula matematica ma anche a una condizione (anche se, qui, potrei eseguire la matematica f (x) vettoriale quindi in un altro passaggio applica la formula booleana), e così via. Ci sono un sacco di casi d'uso, anzi so che posso fare un po 'con Numpy / Pandas.
Ma, in primo luogo, non posso fare tutto ciò che voglio fare (come trovare se un elemento di un frame è in una lista di un frame comparabile, in base agli elementi, come detto sopra, che sarebbe tremendamente utile ), e mi obbliga a frenare il codice steampunk (che funziona con una strana trasformazione della scienza conosciuta, ma potrebbe non farlo se lo guardi da vicino e con scetticità, e che comunque è brutto e contorto) per farla franca. Inoltre, queste soluzioni non sono sempre efficienti e, quando lo sono, sono solo moderatamente.
In secondo luogo, voglio imparare a diventare un programmatore migliore. Ciò significa non solo affidarsi al lavoro svolto in precedenza senza comprenderlo, o affidarsi a hack o derivati come spingere tutto in cython, numba, C e Fortran sotto il cofano. Se i veri approcci vettorizzati sono fattibili in python, anche se meno performanti a causa delle specificità del linguaggio (comunque, sappiamo tutti che in fondo, qualsiasi cosa qui è più lento di C, C ++ e Fortran a parte forse alcuni nuovi linguaggi che non sono interpretati ma compilato), mi piacerebbe imparare a sapere come, come parte del miglioramento delle mie capacità e comprensione della programmazione.
Di qui la mia domanda. Grazie per avermi aiutato a farlo meglio.