넘파이 방송

Neompai Bangsong



크기가 다른 배열은 더하거나 빼거나 산술에 사용할 수 없습니다. 작은 배열을 복제하여 더 큰 배열과 동일한 차원과 크기를 제공하는 것이 한 가지 방법입니다. 배열 산술을 수행할 때 NumPy는 코드를 크게 단축하고 단순화할 수 있는 배열 브로드캐스팅으로 알려진 기능을 제공합니다. 이 튜토리얼에서는 배열 브로드캐스팅의 개념과 NumPy에서 이를 사용하는 방법에 대해 배울 것입니다. 또한 몇 가지 예시 프로그램이 제공됩니다.

NumPy 방송이란 무엇입니까?

다른 형식의 배열에 대해 산술 연산을 수행할 때 NumPy는 이것을 브로드캐스팅이라고 합니다. 이러한 배열 작업은 해당 요소에서 자주 수행됩니다. 두 배열의 모양이 같으면 쉽게 수행할 수 있습니다. 이 개념이 유용하더라도 브로드캐스팅은 계산 속도를 저하시키는 비효율적인 메모리 사용을 초래할 수 있으므로 항상 권장되는 것은 아닙니다. NumPy 작업은 종종 요소별로 분류된 배열 쌍에서 수행됩니다.

방송 규칙

방송할 때는 특정 지침을 따라야 합니다. 아래에 설명되어 있습니다.







  1. 낮은 순위 배열 모양은 두 배열의 순위가 동일하지 않은 경우 배열의 두 모양이 동일한 길이를 공유할 때까지 앞에 1을 추가하는 것이 중요합니다.
  2. 두 배열의 차원 크기가 같거나 그 중 하나의 차원 크기가 1로 설정된 경우 두 배열이 호환되는 것으로 간주됩니다.
  3. 배열은 크기와 차원이 일치하는 경우에만 함께 브로드캐스트할 수 있습니다.
  4. 브로드캐스팅이 완료되면 모든 배열은 두 입력 배열의 모양에서 가장 큰 요소의 형식과 일치하는 것처럼 작동합니다.
  5. 다른 배열의 차원이 1보다 크고 첫 번째 배열의 차원이 1인 경우 배열 중 하나는 해당 차원으로 복제된 것처럼 작동합니다.

이제 방송의 개념을 구현하는 몇 가지 예를 살펴보겠습니다.



예 1:

배열 쌍에서 NumPy 작업은 일반적으로 요소별로 수행됩니다. 가장 간단한 시나리오에서 두 배열은 아래 예와 같이 모양이 같아야 합니다.



수입 numpy

one_arr = 멍멍. 정렬 ( [ 2.0 , 3.0 , 1.0 ] )

2_arr = 멍멍. 정렬 ( [ 3.0 , 3.0 , 3.0 ] )

인쇄 ( one_arr * 두_arr )





위의 코드에서 볼 수 있듯이 'one_arr' 및 'two_ arr'의 두 가지 배열이 있습니다. 각각에는 별도의 값 집합이 있습니다. 'one_arr'의 값은 [2.0,3.0,1.0]이고 'two _arr'은 [3.0,3.0,3.0]입니다. 그러면 이 두 배열의 곱을 계산한 결과가 다음과 같은 것을 확인할 수 있습니다.



특정 요구 사항이 어레이의 형식에 의해 충족되면 NumPy의 브로드캐스팅 규칙이 이 제한을 낮춥니다. 연산에서 배열과 스칼라 값이 결합되면 가장 기본적인 형태로 브로드캐스팅을 보여줍니다. 보시다시피 'two_arr'이라는 변수에 3이 들어 있습니다.

수입 numpy

one_arr = 멍멍. 정렬 ( [ 2.0 , 3.0 , 1.0 ] )

2_arr = 3.0

인쇄 ( one_arr * 두_arr )

위의 코드는 다음과 같은 결과를 생성합니다.

앞의 예에서 'two_arr'이 배열인 경우 결과는 동일합니다. 산술 과정에서 'two_arr' 스칼라가 'one _arr'과 같은 모양을 갖는 배열로 확장되는 것을 상상할 수 있습니다. 배열 'two_arr'에는 첫 번째 스칼라의 복제본일 뿐인 새로운 요소가 포함됩니다. 스트레칭 비교는 단지 가설일 뿐입니다. 브로드캐스팅 작업을 메모리로 만들고 가능한 한 경제적인 계산을 위해 NumPy는 복사본을 생성하는 대신 원래 스칼라 값을 사용할 만큼 충분히 똑똑합니다.

예 2:

다음은 브로드캐스팅을 수행하는 또 다른 간단한 Python 프로그램입니다. 다시 한 번, 서로 다른 값을 포함하는 두 개의 배열이 생성됩니다. 외적을 계산하려면 'first_arr'을 3×1 모양의 열 벡터로 변형해야 합니다. 이후 'second_arr'에 대해 방송을 수행하여 'first_arr'과 'second_arr'의 외적이라고 하는 크기 3×2의 결과를 제공한다. 'result_arr'의 형태가 2이므로 2×3으로의 방송이 가능하다. ×3 및 모양(3,).

위에서 언급한 모든 단계를 수행한 후에는 'result_arr' 및 'second_arr'인 행렬의 모든 열에 벡터가 포함되어야 합니다. 이들은 2×3 및 (2, )의 차원을 갖습니다. 'result_arr'을 전치하면 3×2 모양이 생성되며, 동일한 형식을 얻기 위해 'second_arr'에 대해 브로드캐스트될 수 있습니다. 일반적으로 이것을 전치하면 2x3 모양의 최종 제품이 생성됩니다.

수입 numpy

첫 번째_arr = 멍멍. 정렬 ( [ 12 , 24 , 14 ] )

두 번째_arr = 멍멍. 정렬 ( [ 열 다섯 , 22 ] )

인쇄 ( 멍멍. 모양을 바꾸다 ( 첫 번째_arr , ( , 1 ) ) * 두 번째_arr )

결과_arr = 멍멍. 정렬 ( [ [ 12 , 22 , 31 ] , [ 열 다섯 , 22 , 오분의 사 ] ] )

인쇄 ( result_arr + first_arr )

인쇄 ( ( 결과_arr. + 두 번째_arr ) . )

인쇄 ( result_arr + numpy. 모양을 바꾸다 ( 두 번째_arr , ( , 1 ) ) )

인쇄 ( 결과_arr * )

아래에서 출력을 볼 수 있습니다.

예 3:

다음 Python 프로그램을 사용하여 3차원 배열을 브로드캐스트할 수 있습니다. 이 예에서는 'first_arr' 및 'second_arr'이라는 두 개의 배열이 생성되었습니다. 배열 'first_arr'에는 [4,13,26,12] 값이 포함되고 'second_arr'에는 [32,67,45,17] 값이 포함됩니다. 초기 배열의 2차원이 차이를 만듭니다. 첫 번째와 두 번째 배열의 합은 코드가 실행된 후 아래에 표시됩니다. 코드에 3개의 인쇄 문이 있는 것을 볼 수 있습니다. 각 명령문에는 '첫 번째 배열:', '두 번째 배열', '세 번째 배열:' 텍스트가 차례로 표시됩니다. 그러면 새로 생성된 두 배열의 합계가 표시됩니다.

수입 numpy

첫 번째_arr = 멍멍. 정렬 ( [ [ 4 , 13 , 26 , 12 ] , [ 32 , 67 , 오분의 사 , 17 ] ] )

두 번째_arr = 멍멍. 정렬 ( [ 24 , 오분의 사 , 66 , 87 ] )

인쇄 ( ' \N 첫 번째 배열: ' )

인쇄 ( 첫 번째_arr )

인쇄 ( ' \N 두 번째 배열: ' )

인쇄 ( 두 번째_arr )

인쇄 ( ' \N 첫 번째와 두 번째 배열의 합: ' )

합계_결과 = 첫 번째_arr + 두 번째_arr ;

인쇄 ( 합계_결과 )

다음은 주어진 코드의 출력 스크린샷입니다.

예 4:

3차원 배열을 브로드캐스트하는 마지막 Python 프로그램이 여기에 나와 있습니다. 이 프로그램에는 두 개의 배열이 지정되어 있으며 그 중 첫 번째는 3차원입니다. 첫 번째와 두 번째 배열의 합은 코드가 실행된 후 위와 같이 표시됩니다. 이러한 배열의 값은 다양하지만 나머지 코드는 위의 예제 프로그램에서 사용된 것과 동일합니다.

수입 numpy

첫 번째_arr = 멍멍. 정렬 ( [ [ 12 , 오분의 사 , 22 , 13 ] , [ 22 , 54 , 25 , 12 ] , [ 오십 , 40 , 18 , 26 ] ] )

두 번째_arr = 멍멍. 정렬 ( [ 12 , 44 , 22 , 12 ] )

인쇄 ( ' \N 첫 번째 배열: ' )

인쇄 ( 첫 번째_arr )

인쇄 ( ' \N 두 번째 배열: ' )

인쇄 ( 두 번째_arr )

인쇄 ( ' \N 첫 번째와 두 번째 배열의 합: ' )

합계_결과 = 첫 번째_arr + 두 번째_arr ;

인쇄 ( 합계_결과 )

아래 그림에서 첫 번째 배열의 3차원 배열이 표시되고 두 번째 배열의 2차원 배열이 표시되고 이 둘의 결과가 방송 원리를 적용한 것을 볼 수 있습니다.

결론

이 기사에서는 중요한 Python 개념인 방송에 대해 설명했습니다. NumPy에서 '브로드캐스팅'이라는 용어는 자주 수행되는 산술 연산을 수행하면서 다양한 모양의 배열을 처리하는 능력을 나타냅니다. 앞서 언급한 주제는 다양한 예를 통해 철저하게 다루어졌습니다. 이 기사에서는 언급된 예제 프로그램을 사용하여 각각 1차원, 2차원 및 3차원 배열에서 브로드캐스트하는 방법을 보여주었습니다. 시스템에서 이러한 예제를 실행하고 결과를 보고 모든 것이 일반적으로 어떻게 작동하는지 더 잘 이해할 수 있습니다.