이번 글에서는 Broadcasting에 대해서 다뤄보도록 하겠습니다.
Reference
https://numpy.org/doc/stable/user/basics.broadcasting.html
Broadcasting — NumPy v1.21 Manual
The term broadcasting describes how numpy treats arrays with different shapes during arithmetic operations. Subject to certain constraints, the smaller array is “broadcast” across the larger array so that they have compatible shapes. Broadcasting provi
numpy.org
공식 문서에서는 broadcasting을 아래와 같이 정의하고 있습니다.
The term broadcasting describes how numpy treats arrays with different shapes during arithmetic operations. Subject to certain constraints, the smaller array is “broadcast” across the larger array so that they have compatible shapes. Broadcasting provides a means of vectorizing array operations so that looping occurs in C instead of Python. It does this without making needless copies of data and usually leads to efficient algorithm implementations. There are, however, cases where broadcasting is a bad idea because it leads to inefficient use of memory that slows computation.
관련된 예제 입니다.
x = np.arange(4)
>>> xx = x.reshape(4,1)
>>> y = np.ones(5)
>>> z = np.ones((3,4))
>>> x.shape
(4,)
>>> y.shape
(5,)
>>> x + y
ValueError: operands could not be broadcast together with shapes (4,) (5,)
>>> xx.shape
(4, 1)
>>> y.shape
(5,)
>>> (xx + y).shape
(4, 5)
>>> xx + y
array([[ 1., 1., 1., 1., 1.],
[ 2., 2., 2., 2., 2.],
[ 3., 3., 3., 3., 3.],
[ 4., 4., 4., 4., 4.]])
>>> x.shape
(4,)
>>> z.shape
(3, 4)
>>> (x + z).shape
(3, 4)
>>> x + z
array([[ 1., 2., 3., 4.],
[ 1., 2., 3., 4.],
[ 1., 2., 3., 4.]])
'컴퓨터공학 > python' 카테고리의 다른 글
[Numpy] Axis and Keepdims Arguments (0) | 2021.10.06 |
---|---|
[Numpy] Indexing and Slicing (0) | 2021.10.05 |
[Numpy] Data type에 대하여 (0) | 2021.10.01 |
[Numpy] ndarray를 알아보자2(reshape, resize,copy,view) (0) | 2021.09.30 |
[Numpy] ndarray에 대해 (0) | 2021.09.30 |