Heim > Artikel > Backend-Entwicklung > Codeanalyse des Broadcast-Prinzips von Numpy in Python
Der Inhalt dieses Artikels befasst sich mit der Code-Analyse des Numpy-Broadcast-Prinzips. Ich hoffe, dass er für Freunde hilfreich ist.
Um dieses Prinzip zu verstehen, schauen wir uns zunächst eine Reihe von Beispielen an:
# 数组直接对一个数进行加减乘除,产生的结果是数组中的每个元素都会加减乘除这个数。 In [12]: import numpy as np In [13]: a = np.arange(1,13).reshape((4, 3)) In [14]: a * 2 Out[14]: array([[ 2, 4, 6], [ 8, 10, 12], [14, 16, 18], [20, 22, 24]]) # 接下来我们看一下数组与数组之间的计算 In [17]: b = np.arange(12,24).reshape((4,3)) In [18]: b Out[18]: array([[12, 13, 14], [15, 16, 17], [18, 19, 20], [21, 22, 23]]) In [19]: a + b Out[19]: array([[13, 15, 17], [19, 21, 23], [25, 27, 29], [31, 33, 35]]) In [20]: c = np.array([1,2,3]) In [21]: a+c Out[21]: array([[ 2, 4, 6], [ 5, 7, 9], [ 8, 10, 12], [11, 13, 15]]) In [22]: d = np.arange(10,14).reshape((4,1)) In [23]: d Out[23]: array([[10], [11], [12], [13]]) In [24]: a + d Out[24]: array([[11, 12, 13], [15, 16, 17], [19, 20, 21], [23, 24, 25]]) # 从上面可以看出,和线性代数中不同的是,m*n列的m行的一维数组或者n列的一维数组也是可以计算的。
Warum ist das so? Hier sei das Broadcasting-Prinzip von Numpy erwähnt:
Wenn die Abmessung der Hinterkante (die Abmessung beginnend am Ende) der beiden Arrays und die Achsenlänge übereinstimmen oder wobei wenn die Länge einer Seite 1 beträgt, gelten sie als sendekompatibel. Die Übertragung erfolgt bei fehlenden Dimensionen und/oder Dimensionen mit Achsenlänge 1.Im obigen Code ist die Dimension von a (4, 3), die Dimension von c ist (1, 3); die Dimension von d ist (4, 1). Angenommen, es gibt zwei Arrays, das erste hat die Dimensionen (x_1, y_1, z_1) und das andere Array hat die Dimensionen (x_2, y_2, z_2). Um festzustellen, ob diese beiden Arrays berechnet werden können, können Sie die folgende Methode verwenden Zur Beurteilung:
if z_1 == z_2 or z_1 == 1 or z_2 == 1: if y_1 == y_2 or y_1 == 1 or y_2 == 1: if x_1 == x_2 or x_1 == 1 or x_2 == 1: 可以运算 else: 不可以运算 else: 不可以运算 else: 不可以运算
Hier ist zu beachten: (3, 3, 2) und (3, 2) können operiert werden, da das zweidimensionale Array (3, 2) auch ausgedrückt werden kann als ( 1, 3, 2) ist es durchaus möglich, die oben genannten Regeln auf die gleiche Weise anzuwenden: (4, 2, 5, 4) und (2, 1, 4) können ebenfalls angewendet werden.
Das obige ist der detaillierte Inhalt vonCodeanalyse des Broadcast-Prinzips von Numpy in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!