


Verwenden der Vektorisierung zum Ersetzen von Schleifen in Python
Alle Programmiersprachen sind untrennbar mit Schleifen verbunden. Daher beginnen wir standardmäßig mit der Ausführung einer Schleife, wann immer es einen sich wiederholenden Vorgang gibt. Aber wenn wir es mit einer großen Anzahl von Iterationen (Millionen/Milliarden Zeilen) zu tun haben, ist die Verwendung von Schleifen ein Verbrechen. Möglicherweise stecken Sie ein paar Stunden lang fest, nur um später festzustellen, dass es nicht funktioniert. An dieser Stelle wird die Implementierung der Vektorisierung in Python sehr wichtig.
Was ist Vektorisierung?
Vektorisierung ist eine Technik zum Implementieren von (NumPy)-Array-Operationen an einem Datensatz. Im Hintergrund wird die Operation auf alle Elemente des Arrays oder der Reihe gleichzeitig angewendet (im Gegensatz zu einer „for“-Schleife, die jeweils eine Zeile bearbeitet).
Als nächstes zeigen wir anhand einiger Anwendungsfälle, was Vektorisierung ist.
Summe der Zahlen
##使用循环 import time start = time.time() # iterative sum total = 0 # iterating through 1.5 Million numbers for item in range(0, 1500000): total = total + item print('sum is:' + str(total)) end = time.time() print(end - start) #1124999250000 #0.14 Seconds
## 使用矢量化 import numpy as np start = time.time() # vectorized sum - using numpy for vectorization # np.arange create the sequence of numbers from 0 to 1499999 print(np.sum(np.arange(1500000))) end = time.time() print(end - start) ##1124999250000 ##0.008 Seconds
Die Ausführungszeit der Vektorisierung wird im Vergleich zur Iteration mit Bereichsfunktionen um etwa das 18-fache reduziert. Dieser Unterschied wird noch deutlicher, wenn Pandas DataFrame verwendet wird.
Matheoperationen
In der Datenwissenschaft verwenden Entwickler bei der Arbeit mit Pandas DataFrame Schleifen, um durch mathematische Operationen neue abgeleitete Spalten zu erstellen.
Im folgenden Beispiel können wir sehen, wie einfach es ist, Schleifen durch Vektorisierung für solche Anwendungsfälle zu ersetzen.
DataFrame sind tabellarische Daten in Form von Zeilen und Spalten.
Wir erstellen einen Pandas-DataFrame mit 5 Millionen Zeilen und 4 Spalten, gefüllt mit Zufallswerten zwischen 0 und 50.
import numpy as np import pandas as pd df = pd.DataFrame(np.random.randint( 0 , 50 , size=( 5000000 , 4 )), columns=( 'a' , 'b' , 'c' , 'd ' )) df.shape # (5000000, 5) df.head()
Erstellen Sie eine neue Spalte „Verhältnis“, um das Verhältnis der Spalten „d“ und „c“ zu ermitteln.
## 循环遍历 import time start = time.time() # 使用 iterrows 遍历 DataFrame for idx, row in df.iterrows(): # 创建一个新列 df.at[idx, 'ratio' ] = 100 * (row[ "d" ] / row[ "c" ]) end = time.time() print (end - start) ### 109 秒
## 使用矢量化 start = time.time() df[ "ratio" ] = 100 * (df[ "d" ] / df[ "c" ]) end = time.time() print (end - start) ### 0.12 秒
Wir können mit dem DataFrame erhebliche Verbesserungen feststellen, da die vektorisierte Operation im Vergleich zur Schleife in Python fast 1000-mal schneller dauert.
If-else-Anweisungen
Wir haben viele Operationen implementiert, die die Verwendung einer Logik vom Typ „If-else“ erfordern. Wir können diese Logik leicht durch vektorisierte Operationen in Python ersetzen.
Sehen wir uns das folgende Beispiel an, um es besser zu verstehen (wir werden den DataFrame verwenden, den wir in Anwendungsfall 2 erstellt haben):
Stellen Sie sich vor, wir möchten eine neue Spalte basierend auf einigen Bedingungen für die vorhandene Spalte „a“ erstellen. e"
## 使用循环 import time start = time.time() # 使用 iterrows 遍历 DataFrame for idx, row in df.iterrows(): if row.a == 0 : df.at[idx, 'e' ] = row.d elif ( row.a <= 25 ) & (row.a > 0 ): df.at[idx, 'e' ] = (row.b)-(row.c) else : df.at[idx, 'e' ] = row.b + row.c end = time.time() print (end - start) ### 耗时:166 秒
## 矢量化 start = time.time() df[ 'e' ] = df[ 'b' ] + df[ 'c' ] df.loc[df[ 'a' ] <= 25 , 'e' ] = df [ 'b' ] -df[ 'c' ] df.loc[df[ 'a' ]== 0 , 'e' ] = df[ 'd' ]end = time.time() 打印(结束 - 开始) ## 0.29007707595825195 秒
Der vektorisierte Vorgang dauert 600-mal schneller im Vergleich zu einer Python-Schleife mit if-else-Anweisungen.
Lösen von Netzwerken für maschinelles Lernen/Deep Learning
Deep Learning erfordert, dass wir mehrere komplexe Gleichungen und Probleme mit Millionen und Abermilliarden von zu lösenden Linien lösen. Das Ausführen von Schleifen zur Lösung dieser Gleichungen in Python ist sehr langsam und die Vektorisierung ist die beste Lösung.
Um beispielsweise die y-Werte für Millionen von Zeilen in der folgenden multiplen linearen Regressionsgleichung zu berechnen:
Wir können Vektorisierung anstelle von Schleifen verwenden. Die Werte von
m1, m2, m3… werden durch Lösen der obigen Gleichung unter Verwendung von Millionen von Werten entsprechend x1, x2, x3…
import numpy as np # 设置 m 的初始值 m = np.random.rand( 1 , 5 ) # 500 万行的输入值 x = np.random.rand( 5000000 , 5 )
## 使用循环 import numpy as np m = np.random.rand(1,5) x = np.random.rand(5000000,5) total = 0 tic = time.process_time() for i in range(0,5000000): total = 0 for j in range(0,5): total = total + x[i][j]*m[0][j] zer[i] = total toc = time.process_time() print ("Computation time = "+ str ((toc - tic)) + "seconds" ) ####计算时间 = 27.02 秒
## 矢量化 tic = time.process_time() #dot product np.dot(x,mT) toc = time.process_time() print ( "计算时间 = " + str ((toc - tic)) + "seconds" ) ####计算时间 = 0.107 秒
np vektorisierte Matrixmultiplikation im Backend. Im Vergleich zu Schleifen in Python ist es 165-mal schneller.
Fazit
Die Vektorisierung in Python ist sehr schnell und sollte Schleifen vorgezogen werden, wenn wir mit sehr großen Datensätzen arbeiten.
Wenn Sie mit der Zeit mit der Implementierung beginnen, werden Sie sich daran gewöhnen, entlang vektorisierter Codezeilen zu denken.
Das obige ist der detaillierte Inhalt vonVerwenden der Vektorisierung zum Ersetzen von Schleifen in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





PyCharm ist eine häufig verwendete integrierte Python-Entwicklungsumgebung mit umfangreichen Funktionen und Tastenkombinationen, die Entwicklern dabei helfen können, die Programmiereffizienz zu verbessern. Im täglichen Programmierprozess kann die Beherrschung der Fähigkeiten zum Ersetzen von Tastenkombinationen in PyCharm Entwicklern dabei helfen, Aufgaben schneller zu erledigen. In diesem Artikel werden einige häufig verwendete Ersatz-Tastenkombinationen in PyCharm vorgestellt, mit denen Sie Ihre Programmiergeschwindigkeit auf einfache Weise verbessern können. 1.Strg+R-Ersetzung In PyCharm können Sie die Tastenkombination Strg+R verwenden, um Ersetzungsvorgänge durchzuführen.

jQuery ist eine klassische JavaScript-Bibliothek, die in der Webentwicklung weit verbreitet ist. Sie vereinfacht Vorgänge wie die Verarbeitung von Ereignissen, die Bearbeitung von DOM-Elementen und die Durchführung von Animationen auf Webseiten. Bei der Verwendung von jQuery kommt es häufig vor, dass Sie den Klassennamen eines Elements ersetzen müssen. In diesem Artikel werden einige praktische Methoden und spezifische Codebeispiele vorgestellt. 1. Verwenden Sie die Methoden „removeClass()“ und „addClass()“. jQuery stellt die Methode „removeClass()“ zum Löschen bereit

PyCharm ist eine leistungsstarke integrierte Python-Entwicklungsumgebung mit umfangreichen Funktionen und Tools, die die Entwicklungseffizienz erheblich verbessern können. Unter diesen ist die Ersetzungsfunktion eine der im Entwicklungsprozess häufig verwendeten Funktionen, die Entwicklern helfen kann, den Code schnell zu ändern und die Codequalität zu verbessern. In diesem Artikel wird die Ersetzungsfunktion von PyCharm ausführlich vorgestellt, kombiniert mit spezifischen Codebeispielen, um Anfängern zu helfen, diese Funktion besser zu beherrschen und zu verwenden. Einführung in die Ersetzungsfunktion Die Ersetzungsfunktion von PyCharm kann Entwicklern dabei helfen, bestimmten Text im Code schnell zu ersetzen

Wenn der Lambda-Ausdruck aus der Schleife ausbricht, sind spezifische Codebeispiele erforderlich. Bei der Programmierung ist die Schleifenstruktur eine wichtige Syntax, die häufig verwendet wird. Unter bestimmten Umständen möchten wir jedoch möglicherweise aus der gesamten Schleife ausbrechen, wenn eine bestimmte Bedingung im Schleifenkörper erfüllt ist, anstatt nur die aktuelle Schleifeniteration zu beenden. Zu diesem Zeitpunkt können uns die Eigenschaften von Lambda-Ausdrücken dabei helfen, das Ziel zu erreichen, aus der Schleife zu springen. Der Lambda-Ausdruck ist eine Möglichkeit, eine anonyme Funktion zu deklarieren, die intern einfache Funktionslogik definieren kann. Es unterscheidet sich von einer gewöhnlichen Funktionsdeklaration:

PyCharm ist eine integrierte Entwicklungsumgebung, die bei Programmierern beliebt ist. Sie bietet leistungsstarke Funktionen und Tools, um die Programmierung effizienter und komfortabler zu gestalten. In PyCharm ist die sinnvolle Einstellung und Ersetzung von Tastenkombinationen einer der Schlüssel zur Verbesserung der Programmiereffizienz. In diesem Artikel wird erläutert, wie Sie Tastenkombinationen in PyCharm ersetzen, um die Programmierung komfortabler zu gestalten. 1. Warum sollten wir Tastenkombinationen in PyCharm ersetzen, um Programmierern dabei zu helfen, verschiedene Vorgänge schnell abzuschließen und die Programmiereffizienz zu verbessern? Allerdings hat jeder andere Gewohnheiten, und bei manchen Menschen ist das vielleicht der Fall

In Python können wir mithilfe einer Python-Bibliothek eines Drittanbieters namens openpyxl ein Wort durch ein anderes Wort in Excel ersetzen. Microsoft Excel ist ein nützliches Tool zum Verwalten und Analysieren von Daten. Mit Python können wir einige Excel-Datenverwaltungsaufgaben automatisieren. In diesem Artikel erfahren Sie, wie Sie mit Python ein Wort in Excel ersetzen. Bevor wir openpyxl installieren, um Word in Excel zu ersetzen, müssen wir die openpyxl-Bibliothek mithilfe des Python-Paketmanagers im System installieren. Um openpyxl zu installieren, geben Sie den folgenden Befehl im Terminal oder in der Eingabeaufforderung ein. Pipinst

In diesem Artikel wird ausführlich erläutert, wie PHP alle Werte eines Arrays zurückgibt, um ein Array zu bilden. Der Herausgeber hält dies für recht praktisch, daher teile ich es Ihnen als Referenz mit und hoffe, dass Sie nach dem Lesen dieses Artikels etwas gewinnen können . Verwenden der Funktion array_values() Die Funktion array_values() gibt ein Array aller Werte in einem Array zurück. Die Schlüssel des ursprünglichen Arrays bleiben nicht erhalten. $array=["foo"=>"bar","baz"=>"qux"];$values=array_values($array);//$values werden ["bar","qux"]Verwendet Eine Schleife kann eine Schleife verwenden, um alle Werte des Arrays manuell abzurufen und zu einem neuen hinzuzufügen

PyCharm ist eine integrierte Python-Entwicklungsumgebung, die bei Entwicklern sehr beliebt ist. Sie bietet viele Möglichkeiten, Code schnell zu ersetzen und so den Entwicklungsprozess effizienter zu gestalten. In diesem Artikel werden mehrere häufig verwendete Methoden zum schnellen Ersetzen von Code in PyCharm vorgestellt und spezifische Codebeispiele bereitgestellt, um Entwicklern dabei zu helfen, diese Funktionen besser zu nutzen. 1. Verwenden Sie die Ersetzungsfunktion. PyCharm bietet eine leistungsstarke Ersetzungsfunktion, mit der Entwickler schnell Text im Code ersetzen können. Verwenden Sie die Tastenkombination Strg+R oder klicken Sie mit der rechten Maustaste in den Editor und wählen Sie Re
