>  기사  >  백엔드 개발  >  Python에서 Numpy의 브로드캐스트 원리에 대한 코드 분석

Python에서 Numpy의 브로드캐스트 원리에 대한 코드 분석

不言
不言원래의
2018-09-20 17:27:041525검색

이 기사의 내용은 Python에서 Numpy의 브로드캐스트 원리에 대한 코드 분석에 관한 것입니다. 이는 특정 참조 가치가 있습니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

이 원리를 이해하기 위해 먼저 일련의 예를 살펴보겠습니다.

# 数组直接对一个数进行加减乘除,产生的结果是数组中的每个元素都会加减乘除这个数。
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列的一维数组也是可以计算的。

이게 왜일까요? numpy의 브로드캐스트 원리는 다음과 같습니다.

두 배열의 축 길이 중 후행 가장자리 치수(끝에서 시작하는 치수) 가 일치하거나 그중 하나의 길이가 1 인 경우 고려됩니다. 방송 호환이 가능합니다. 브로드캐스트는 축 길이가 1인 누락된 차원 및/또는 차원에서 발생합니다. 위 코드에서 a의 차원은 (4, 3)이고, c의 차원은 (1, 3)입니다. 따라서 두 개의 배열이 있다고 가정합니다. 첫 번째 배열에는 차원(x_1, y_1, z_1)이 있고 다른 배열에는 차원(x_2, y_2, z_2)이 있습니다. 이 두 배열을 계산할 수 있는지 확인하려면 다음 방법을 사용할 수 있습니다. 판단 방법:

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:
    不可以运算
여기서 주의해야 할 점: (3, 3, 2)와 (3, 2)는 연산이 가능합니다. 2차원 배열 (3, 2)의 경우 (1)로 표현될 수도 있기 때문입니다. , 3, 2), 위의 규칙을 적용하는 것은 완전히 적용 가능하며, 마찬가지로 (4, 2, 5, 4) 및 (2, 1, 4)도 연산할 수 있습니다.

위 내용은 Python에서 Numpy의 브로드캐스트 원리에 대한 코드 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.