Maison > Article > développement back-end > Analyse de code du principe de diffusion de Numpy en python
Le contenu de cet article concerne l'analyse du code du principe de diffusion de Numpy en Python. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Afin de comprendre ce principe, regardons d'abord une série d'exemples :
# 数组直接对一个数进行加减乘除,产生的结果是数组中的每个元素都会加减乘除这个数。 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列的一维数组也是可以计算的。
Pourquoi est-ce ? Le principe de diffusion de numpy doit être mentionné ici :
Si la dimension du bord arrière (la dimension commençant par la fin) des deux tableaux et la longueur de l'axe correspondent ou où Si la longueur d'un côté est 1, ils sont considérés comme compatibles avec la diffusion. La diffusion s'effectue sur les dimensions manquantes et/ou les dimensions de longueur d'axe 1.Dans le code ci-dessus, la dimension de a est (4, 3), la dimension de c est (1, 3) ; la dimension de d est (4, 1). Supposons donc qu'il y ait deux tableaux, le premier a des dimensions (x_1, y_1, z_1) et l'autre tableau a des dimensions (x_2, y_2, z_2). Pour déterminer si ces deux tableaux peuvent être calculés, vous pouvez utiliser la méthode suivante. Pour juger :
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: 不可以运算
Il faut noter ici : (3, 3, 2) et (3, 2) peuvent être exploités, car le tableau bidimensionnel (3, 2) peut aussi s'exprimer comme (1 , 3, 2), il est tout à fait applicable d'appliquer les règles ci-dessus de la même manière : (4, 2, 5, 4) et (2, 1, 4) peuvent également être exploités.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!