728x90
Broadcast¶
- 크기가 서로다른 Numpy array를 연산할 때, 자동으로 크기를 맞추어 연산해주는 기능이다.
In [1]:
import numpy as np
In [2]:
arr1 = np.array([[1,2,3],
[4,5,6]])
arr1
Out[2]:
array([[1, 2, 3], [4, 5, 6]])
In [3]:
arr1.shape
Out[3]:
(2, 3)
In [4]:
arr2 = np.array([7,8,9])
arr2
Out[4]:
array([7, 8, 9])
In [5]:
arr2.shape
Out[5]:
(3,)
2개의 numpy array를 더하기¶
In [6]:
arr1 + arr2
Out[6]:
array([[ 8, 10, 12], [11, 13, 15]])
2개의 numpy array를 곱하기¶
In [7]:
arr1 * arr2
Out[7]:
array([[ 7, 16, 27], [28, 40, 54]])
numpy array에 10을 곱하기¶
In [8]:
arr1 * 10
Out[8]:
array([[10, 20, 30], [40, 50, 60]])
numpy array를 제곱¶
In [9]:
arr1 ** 2
Out[9]:
array([[ 1, 4, 9], [16, 25, 36]], dtype=int32)
Universal Functions¶
- Numpy array의 Universal Function이라는 기능은 하나의 함수를 모든 원소에 자동으로 적용하는 기능이다.
- Universal Functions는 모든 원소에 같은 함수를 적용할 때 High Performance를 보여준다.
In [15]:
arr1 = np.array([1, 2, 3])
print("arr1의 dtype :", arr1.dtype)
arr1 = arr1 / 1
print("Universal Function 후 arr1의 dtype: ", arr1.dtype)
arr1의 dtype : int32 Universal Function 후 arr1의 dtype: float64
모든 원소에 역수 처리¶
In [16]:
1/ arr1
Out[16]:
array([1. , 0.5 , 0.33333333])
모든 원소에 2 더하기¶
In [17]:
arr1 + 2
Out[17]:
array([3., 4., 5.])
Indexing¶
numpy array 생성¶
In [21]:
arr1 = np.arange(100)
arr1
Out[21]:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99])
첫번째 원소 인덱싱¶
In [22]:
arr1[0]
Out[22]:
0
마지막 원소 인덱싱¶
In [23]:
arr1[-1]
Out[23]:
99
앞에서부터 원소 세개¶
In [24]:
arr1[:3]
Out[24]:
array([0, 1, 2])
3*4 array 생성¶
In [25]:
arr2 = np.array([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]])
arr2
Out[25]:
array([[ 1, 2, 3, 4], [ 5, 6, 7, 8], [ 9, 10, 11, 12]])
arr2의 (2,3)의 원소¶
In [26]:
arr2[1,2]
Out[26]:
7
arr2의 세번째 column¶
In [27]:
arr2[:,2]
Out[27]:
array([ 3, 7, 11])
arr2의 두번째 row¶
In [28]:
arr2[1,:]
Out[28]:
array([5, 6, 7, 8])
In [29]:
arr2[1]
Out[29]:
array([5, 6, 7, 8])
Masking¶
- Numpy array의 masking 기능은 사용자가 지정한 조건의 row나 column을 추출하는 기능이다.
- 원하는 column을 인덱싱할 수 있어서 데이터 전처리에 필수적인 기능이다.
masking을 위한 numpy array 생성¶
In [33]:
mask = np.array([1, 0, 1, 0, 1, 0, 0])
mask
Out[33]:
array([1, 0, 1, 0, 1, 0, 0])
전처리하기 위한 임의의 데이터 생성¶
In [34]:
data = np.random.randn(7,4) # np.random.randn()은 임의의 value를 가진 numpy array를 만든다.
data
Out[34]:
array([[-0.90587352, 1.06786721, 0.10273511, -1.1576817 ], [ 0.40135706, -1.13207392, -0.40053767, -0.82053422], [-0.89400079, -1.08903283, -0.1719695 , -1.76308863], [-0.12574245, -1.21681551, -0.31619189, -1.25607439], [-1.21480809, 3.06321077, -0.50935558, -0.82724797], [ 0.46679713, -0.69429252, 1.71778126, -0.45013225], [-2.22489957, 1.06286897, -0.53558184, -1.86232714]])
numpy array의 사이즈 확인¶
In [35]:
data.shape
Out[35]:
(7, 4)
masking 하기 위해 boolean data type 필요하기 때문에 masked_data 만들기¶
In [36]:
masked_data = (mask == 1)
masked_data
Out[36]:
array([ True, False, True, False, True, False, False])
data에 마스크를 적용한다.¶
In [37]:
data[masked_data,:]
Out[37]:
array([[-0.90587352, 1.06786721, 0.10273511, -1.1576817 ], [-0.89400079, -1.08903283, -0.1719695 , -1.76308863], [-1.21480809, 3.06321077, -0.50935558, -0.82724797]])
- 마스킹 된 부분의 row만 출력된다.
data 인덱싱 내에서 마스크를 적용¶
In [38]:
data[mask == 0, :]
Out[38]:
array([[ 0.40135706, -1.13207392, -0.40053767, -0.82053422], [-0.12574245, -1.21681551, -0.31619189, -1.25607439], [ 0.46679713, -0.69429252, 1.71778126, -0.45013225], [-2.22489957, 1.06286897, -0.53558184, -1.86232714]])
- mask중 값이 0인 부분의 row가 출력
In [39]:
data[mask > 0, :]
Out[39]:
array([[-0.90587352, 1.06786721, 0.10273511, -1.1576817 ], [-0.89400079, -1.08903283, -0.1719695 , -1.76308863], [-1.21480809, 3.06321077, -0.50935558, -0.82724797]])
- mask의 원소중 0보다 큰 부분의 row가 출력
famcy indexing을 통한 masking¶
In [41]:
data[:,0] > 0
Out[41]:
array([False, True, False, False, False, True, False])
- 첫번째 column중 0보다 큰 row를 표시
In [42]:
data[data[:,0] > 0, 0]
Out[42]:
array([0.40135706, 0.46679713])
- 첫번째 column중 0보다 큰 row에 해당하는 첫번째 column의 원소를 출력
In [43]:
data[data[:,0] >0] = 0
data
Out[43]:
array([[-0.90587352, 1.06786721, 0.10273511, -1.1576817 ], [ 0. , 0. , 0. , 0. ], [-0.89400079, -1.08903283, -0.1719695 , -1.76308863], [-0.12574245, -1.21681551, -0.31619189, -1.25607439], [-1.21480809, 3.06321077, -0.50935558, -0.82724797], [ 0. , 0. , 0. , 0. ], [-2.22489957, 1.06286897, -0.53558184, -1.86232714]])
- 첫번째 column의 원소중 0보다 큰 부분의 row의 값을 0으로 대입
In [ ]:
728x90
반응형
'AI > K-Digital Training' 카테고리의 다른 글
005. BeautifulSoup으로 웹크롤링 학습1 (0) | 2021.08.01 |
---|---|
004. requests 모듈로 웹 크롤링 학습 (0) | 2021.07.31 |
002.Numpy_Study 1 (0) | 2021.07.29 |
001. 데이터 분석이란?? (0) | 2021.07.20 |
000. K-Digital Training AI 기반 데이터 과학 과정에 참여하게 됐습니다. (0) | 2021.07.20 |