Ein Hinweis auf die Tricks, die ich beim Ausführen des Python-Skripts in pypy verwendet habe. pypy ist ein anderes Python-Ausführungssystem für die schnelle Ausführung von Python-Skripten. Dieser Typ ist auf jeden Fall schnell. Die Kompatibilität zwischen pypy und numpy ist jedoch äußerst schlecht. Obwohl Installation und Import selbst in letzter Zeit reibungslos verlaufen, ist die Berechnung nach numpy in letzter Zeit äußerst langsam. Einige Leute geben Pypy auf, weil es keinen Sinn ergibt. Deshalb werden wir uns hier mit Array-Operationen befassen, die kein Numpy verwenden.
Zunächst nur Listen hinzufügen
array1 = [4,5,6]
array2 = [1,2,3]
array_add = list(map(lambda x,y: x+y, array1, array2))
#[5,7,9]
Erklären Lambda ist praktisch, wenn Sie einfach eine Funktion erstellen möchten. Im obigen Beispiel wird eine Funktion erstellt, die x und y durch Hinzufügen von zwei Argumenten zurückgibt. Andererseits nimmt map () ein Array, das eine Funktion als erstes Argument und ein Argument der ersten Funktion als Element für das zweite und nachfolgende Argument hat, und wendet die Elemente im Array der Reihe nach auf die Funktion an. Werde dir geben. Mit anderen Worten, (4,1), (5,2), (6,3) werden an die von Lambda erzeugte Funktion übergeben, um (x, y) zu erhalten, und die Summe der Rückgabewerte wird berechnet. .. Für map () ist tuple der Rückgabewert in python2. Series, iter jedoch der Rückgabewert in python3. Series. Es wird daher empfohlen, ihn in list () einzuschließen, damit er sowohl in 2. als auch in 3 funktioniert. Ähnlich
#Subtraktion array_subtract = list(map(lambda x,y: x-y, array1, array2)) #[3,3,3]
#Multiplikation array_multiple = list(map(lambda x,y: x*y, array1, array2)) #[4,10,18]
#Teilung array_div = list(map(lambda x,y: x/y, array1, array2))
Wenn Sie den eindimensionalen Fall anwenden, können Sie mehrdimensionale Arrays hinzufügen, subtrahieren, multiplizieren und dividieren, ohne numpy zu verwenden.
array1 = [[1,2,3],[1,2,3]]
array2 = [[2,3,4],[2,3,4]]
array_add = list(map(lambda x,y: list(map(lambda a,b: a+b, x,y)), array1, array2))
#[[3, 5, 7], [3, 5, 7]]
Und wenn Sie Map und Lambda vollständig nutzen, ohne numpy wie dieses zu verwenden, ist die Operation zwischen Arrays umständlich. Auch wenn Sie pypy nicht verwenden, verwenden Sie es bitte, wenn Sie numpy nicht importieren müssen.
Die Inversion eines zweidimensionalen Arrays wird häufig zusätzlich zur Arithmetik verwendet.
array1 = [[1,2,3],[3,4,5],[6,7,8]]
array1_t = list(zip(*array1))
#[(1,3,6),(2,4,7),(3,5,8)]
Recommended Posts