Chapter 16. Numpy
1. Numpy
⦁ numpy는 대규모 다차원 배열을 쉽게 처리할 수 있도록 지원하는 파이썬의 라이브러리
⦁ numpy 명령 프롬프트에서 설치하며, jupyter notebook 내에서는 pip 앞에 !를 붙여 설치
pip install numpy
⦁ numpy를 import하여 사용 가능하며 대부분 np로 사용하기 때문에 as로 사용이름 변경
import numpy as np
2. Numpy array
⦁ np.array(list)를 사용하면 numpy list가 됨
# numpy array
a1 = np.array([1,2,3,4,5])
print([1,2,3,4,5])
print(a1)
print(type(a1))
# 결과값
[1, 2, 3, 4, 5]
[1 2 3 4 5]
<class 'numpy.ndarray'>
⦁ 형변환 시에 문자 자료형은 정수, 실수 자료형으로 형변화 되지 않음
# 형변환
listb = [1,2,'abc','def']
a8 = np.array(listb)
print(a8)
# a8.astype(np.int64)
# 결과값
['1' '2' 'abc' 'def']
3. Numpy arange
⦁ np.arange(a,b,c)를 사용하며 매개변수가 하나이면 0부터 매개변수 전까지 수를 가져옴
⦁ a는 시작점
⦁ b는 끝점이며 b는 포함하지 않음
⦁ c는 step으로 c만큼 갭을 가짐
# numpy arange
a2 = np.arange(10)
print(a2)
a3 = np.arange(3,100,3)
print(a3)
# 1에서부터 10아래 0.5씩 증가하는 숫자, step=0.5
a4 = np.arange(1.3,10,0.5)
print(a4)
# 결과값
[0 1 2 3 4 5 6 7 8 9]
[ 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72
75 78 81 84 87 90 93 96 99]
[1.3 1.8 2.3 2.8 3.3 3.8 4.3 4.8 5.3 5.8 6.3 6.8 7.3 7.8 8.3 8.8 9.3 9.8]
4. Numpy linspace
⦁ np.linspace(a,b,c)를 사용하면 a에서 b까지 c등분을 해줌
# numpy linspace
a4 = np.linspace(0,10,15)
print(a4)
# 결과값
[ 0. 0.71428571 1.42857143 2.14285714 2.85714286 3.57142857
4.28571429 5. 5.71428571 6.42857143 7.14285714 7.85714286
8.57142857 9.28571429 10. ]
5. Numpy zeros, ones
⦁ np.zeros(a), np.ones(a)를 사용하면 a개의 index를 가진 0,1의 값을 가진 리스트를 생성
# numpy zeros, ones
a5 = np.zeros(5,int)
print(a5)
a6 = np.ones(5,int)
print(a6)
a6.astype(np.float64)
# 결과값
[0 0 0 0 0]
[1 1 1 1 1]
array([1., 1., 1., 1., 1.])
6. 자주 사용하는 함수
⦁ dtype은 데이터 타입을 알려줌
⦁ ndim은 몇차원인지를 알려줌
⦁ shape는 해당 numpy의 모양 및 크기를 알려줌
⦁ size는 모든 elements의 갯수를 알려줌
⦁ itemsize는 바이트 크기를 알려줌
⦁ data는 해당 주소를 알려줌
# 함수
print(a7.dtype)
print(a7.ndim)
print(a7.shape)
print(a7.size)
print(a7.itemsize)
print(a7.data)
# 결과값
float64
1
(4,)
4
8
<memory at 0x000001FE3E997880>
7. Numpy index
⦁ numpy array에 [0]은 첫번째 인덱스 [-1]은 마지막 인덱스를 나타냄
⦁ [a: b]는 a부터 b전까지 인덱스 값의 배열을 가져옴
⦁ [a: b: c]는 a부터 b전까지 c의 갭을 가진 인덱스의 배열을 가져옴
# numpy index
a10 = np.arange(10,100,5)
print(a10)
# 특정인덱스
print(a10[3])
# 스타트, 스탑
print(a10[0:3])
# 스타트, 스탑, 스텝
print(a10[0:3:2])
# 결과값
[10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95]
25
[10 15 20]
[10 20]
8. Example
a. 사칙연산
# 사칙연산
a1 = np.arange(5)
a2 = np.arange(10,15)
print(a1)
print(a2)
print('add:',a1+a2)
print(np.concatenate((a1,a2)))
print('sub:',a1-a2)
print('mul:',a1*a2)
print('div:',a1/a2)
# 결과값
[0 1 2 3 4]
[10 11 12 13 14]
add: [10 12 14 16 18]
[ 0 1 2 3 4 10 11 12 13 14]
sub: [-10 -10 -10 -10 -10]
mul: [ 0 11 24 39 56]
div: [0. 0.09090909 0.16666667 0.23076923 0.28571429]