>  기사  >  백엔드 개발  >  Python을 사용하여 동적 배열로 Numpy 브로드캐스트를 수행하는 방법은 무엇입니까?

Python을 사용하여 동적 배열로 Numpy 브로드캐스트를 수행하는 방법은 무엇입니까?

PHPz
PHPz앞으로
2023-09-15 09:13:02775검색

Python을 사용하여 동적 배열로 Numpy 브로드캐스트를 수행하는 방법은 무엇입니까?

"브로드캐스팅"은 NumPy가 산술 연산 중에 다양한 차원의 배열을 처리하는 방법을 나타냅니다. 더 작은 배열은 특정 제한에 따라 더 큰 배열 전체에 "브로드캐스트"되어 모양이 일관되게 유지됩니다. 브로드캐스팅을 사용하면 벡터화할 수 있습니다. 배열 연산을 사용하면 Python 대신 C로 반복할 수 있습니다."

이는 불필요한 데이터 복사가 필요 없이 수행되므로 효율적인 알고리즘 구현이 가능합니다. 경우에 따라 브로드캐스팅은 낭비적인 메모리 사용을 초래하여 계산 속도를 저하시키기 때문에 부정적인 생각입니다.

이 글에서는 Python을 사용하여 NumPy 배열로 브로드캐스팅을 수행하는 방법을 보여드리겠습니다.

현재 고정된 상태에서 여행을 즐기세요-

  • 1단계. 호환 가능한 차원의 두 배열 만들기

  • 2단계. 주어진 배열을 인쇄합니다

  • 3단계. 두 배열을 사용하여 산술 연산을 수행합니다.

  • 4단계. 결과 배열 인쇄

添加两个동일하지 않은 속도

使사용 arange()函数创建一个由0到n-1의 numpy数组(arange()函数返回在给区间内均匀间隔的值。재半开区间[시작, 중지 ]内生成值),并将某个常数值加到其中。

으아악

输출

으아악

给它们의 속도는 동일하지 않습니다.播(只是拉伸)较작은数组,使其适用于数school运算。

将具에는 两个数组加

arange() 함수를 사용하여 0에서 n-1까지 두 개의 NumPy 배열을 만들고 reshape() 함수로 모양을 변경합니다(데이터에 영향을 주지 않고 배열 모양을 바꿉니다). 두 배열은 호환되는 차원(3,4)과 (3,1)을 가지며 두 배열의 해당 요소를 추가합니다.

으아악

输출

으아악

주어진Array_2는 주어진Array_1의 차원과 일치하도록 두 번째 차원을 따라 확장됩니다. 두 어레이의 크기가 호환되므로 이것이 가능합니다.

将具에는 전혀 없는 것이 있습니다.

호환되지 않는 차원 (6, 4) 및 (6, 1)을 사용하여 두 개의 NumPy 배열을 만듭니다. 두 배열의 해당 요소를 추가하려고 하면 아래와 같이 오류가 발생합니다.

으아악

输출

으아악

行数为6,列数为4。

크기 20의 행렬에는 삽입할 수 없습니다(크기 6*4 = 24의 행렬 필요).

Numpy 다차원 배열과 선형 배열 합산

arange() 함수를 사용하여 다차원 배열을 만들고 reshape() 함수를 사용하여 임의의 수의 행과 열로 모양을 변경합니다. arange() 함수를 사용하여 또 다른 선형 배열을 만들고 이 두 배열을 합산합니다.

예 1

으아악

输출

으아악

给数线性数组被扩的 확장은 1(多维数组) 의 속도입니다.

예 2

으아악

输출

으아악

여러 배열이 여러 차원에 따라 전파될 수 있다는 점을 이해하는 것이 중요합니다. Array1의 차원은 (6, 5, 4, 2)이고 array2의 차원은 (5, 4, 1)입니다. 차원 배열은 세 번째 차원을 따라 array1을 늘리고 첫 번째 및 두 번째 차원(6, 5, 4, 2)을 따라 array2를 늘려 구성됩니다.

结论

Numpy广播比재数组上循环更快。从第一个示例开始。每个元素,而不是使用广播方法。这种方式之所以慢,여기에는 循环需要与Python循环进行交互,这会减慢C实现的速島가 있습니다.置为0允许您无限循环遍历组件,而不会产生内存开销。

위 내용은 Python을 사용하여 동적 배열로 Numpy 브로드캐스트를 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제