Analyse de code du principe de diffusion de Numpy en python

不言
Libérer: 2018-09-20 17:27:04
original
1524 Les gens l'ont consulté

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列的一维数组也是可以计算的。
Copier après la connexion

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:
    不可以运算
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal