[데이터분석]5.numpy
넘파이 리스트 vs 파이썬 리스트
import matplotlib.pyplot as plt
import numpy as np
t = np.arange(0., 5., 0.2)
plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^')
plt.show()
import matplotlib.pyplot as plt
t = []
p2 = []
p3 = []
for i in range(0, 50, 2):
t.append(i/10)
p2.append((i/10)**2)
p3.append((i/10)**3)
plt.plot(t, t, 'r--', t, p2, 'bs', t, p3, 'g^')
plt.show()
1. numpy 라이브러리
- 제곱근
import numpy as np
print(np.sqrt(2))
- 파이
import numpy as np
print(np.pi)
print(np.sin(0))
print(np.cos(np.pi))
- 랜덤한 수
import numpy as np
a = np.random.rand(5)
print(a)
print(type(a))
import numpy as np
print(np.sqrt(2))
import numpy as np
print(np.pi)
print(np.sin(0))
print(np.cos(np.pi))
import numpy as np
a = np.random.rand(5)
print(a)
print(type(a))
- numpy.ndarray : N-Dimensional, n차원
⭐️ rand() : 실수로 나옴
import numpy as np
print(np.random.choice(6,10))
#[1 2 5 2 5 4 2 5 4 3]
⭐️ choice(n, m) : 0 ~ n-1까지의 숫자를 m번 반복하여 선택
import numpy as np
print(np.random.choice(10, 6, replace=False))
#[0 6 1 5 4 8]
⭐️ replace=False 로 설정하여 중복값을 뽑지 못하게 설정
import numpy as np
print(np.random.choice(6, 10, p=[0.1, 0.2, 0.3, 0.2, 0.1, 0.1]))
#[0 4 2 2 2 2 4 2 1 1]
⭐️ p : 확률 설정
0은 0.1, 1은 0.2, 2는 0.3 등으로 확률 설정할 수 있음
-그래프 그리기
1) 히스토그램
import numpy as np
import matplotlib.pyplot as plt
dice = np.random.choice(6, 10)
plt.hist(dice, bins=6)
plt.show()
import numpy as np
import matplotlib.pyplot as plt
dice = np.random.choice(6, 1000000, p=[0.1,0.2,0.3,0.2,0.1,0.1]) # 설정한 확률에 따라 값들 출력됨
plt.hist(dice, bins=6)
plt.show()
- 확률 설정 및 10만번 수행
2) 버블차트로 표현
import numpy as np
import matplotlib.pyplot as plt
x = np.random.randint(10, 100, 100)
y = np.random.randint(10, 100, 100)
size = np.random.rand(100) * 100
plt.scatter(x, y, s=size, c=x, cmap='jet', alpha=0.7)
plt.colorbar()
plt.show()
np.random.randint(10, 100, 100)
: [10, 100)까지의 수를 200회 추출하겠다는 의미np.random.rand(n)
: 0~1사이에 있는 n개의 실수를 만들겠다np.random.randint(a,b,n)
: a 이상 b 이하의 n개의 정수를 만들겠다.
import matplotlib.pyplot as plt
import random
x = []
y = []
size = []
for i in range(200):
x.append(random.randint(10,100))
y.append(random.randint(10,100))
size.append(random.randint(10,100))
plt.scatter(x, y, s=size, c=x, cmap='jet', alpha=0.7)
plt.colorbar()
plt.show()
- numpy 미이용한 코드
- numpy array
- ndarray : numpy 배열
import numpy as np
a = np.array([1,2,3,4])
print(a)
#[1 2 3 4]
print(a[1], a[-1])
# 2 4
print(a[1:]
#[2 3 4]
- 넘파이 배열은 리스트 내 쉼표가 없음
- 인덱싱, 슬라이싱 가능
- 한 가지 타입의 데이터만 저장 가능함
import numpy as np a = np.array([1,2,'3',4]) print(a) #['1' '2' '3' '4'] 문자열로 모두 치환됨
- 배열 초기화하기
1) zeros(), ones(), eye() : 0과 1로만 배열 초기화import numpy as np a = np.zeros(10) # 0으로 이루어진 크기가 10인 배열 생성 b = np.ones(10) # 1로 이루어진 크기가 10인 배열 생성 c = np.eye(3) # 3X3행렬 생성 print(a) #[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] print(b) #[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.] print(c) #[[1. 0. 0.] #[0. 1. 0.] #[0. 0. 1.]]
2) arange() 이용 : 특정 간격에 해당하는 값 생성
import numpy as np print(np.arange(3)) #[0 1 2] n-1한 값까지로 배열 생성 print(np.arange(3,7) #[3 4 5 6] 첫번째 숫자부터 두번째 숫자-1까지 배열 생성 print(np.arange(3,7,2)) #[3 5] 일정한 간격을 두고 배열 생성
3)linspace() 이용 : 특정 개수의 구간으로 나눈 값 생성
import numpy as np a = np.arange(1, 2, 0.1) # 1부터 2미만까지 0.1 간격으로 실수 생성 b = np.linspace(1, 2, 11) # 1부터 2까지 11개 구간으로 나눈 실수 생성 print(a) #[1. 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9] print(b) #[1. 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2. ]
import numpy as np
a = np.arange(-np.pi, np.pi, np.pi/10)
b = np.linspace(-np.pi, np.pi, 20)
print(a)
print(b)
-array의 다양한 활용
- 연산 적용
import numpy as np a = np.zeros(10) + 5 print(a) #[5. 5. 5. 5. 5. 5. 5. 5. 5. 5.]
- 함수 적용
import numpy as np a = np.linspace(1, 2, 11) print(np.sqrt(a)) # [1. 1.04880885 1.09544512 1.14017543 1.18321596 1.22474487 1.26491106 1.30384048 1.34164079 1.37840488 1.41421356]
- 배열에 어떤 연산이나 함수를 적용할 때 배열의 모든 값이 한꺼번에 계산됨
import numpy as np
import matplotlib.pyplot as plt
a = np.arange(-np.pi, np.pi, np.pi/100)
plt.plot(a, np.sin(a))
plt.show()
- pi값을 기준으로 특정 범위 생성
- 범위 내 숫자들을 pi값을 100으로 나눈 만큼 간격을 두어 배열 a에 저장
- sin()함수를 a에 저장된 값 전체에 적용 후 그래프로 표현함
import numpy as np
import matplotlib.pyplot as plt
a = np.arange(-np.pi, np.pi, np.pi/100)
plt.plot(a, np.sin(a))
plt.plot(a, np.cos(a))
plt.plot(a+np.pi/2, np.sin(a)) # sin그래프 평형 이동
plt.show()
- 마스크(mask)
- 조건에 부합하는 데이터만 선별적으로 저장
import numpy as np
a = np.arange(-5, 5)
print(a<0) #[ True True True True True False False False False False]
print(a[a<0]) # 마스크 적용
#[-5 -4 -3 -2 -1]
mask1 = abs(a) > 3 #절댓값 이용
print(a[mask1]) #[-5 -4 4]
mask1 = abs(a) > 3
mask2 = abs(a) % 2 == 0
print(a[mask1+mask2]) # 둘 중 조건이 하나라도 참인 경우
#[-5 -4 -2 0 2 4]
print(a[mask1*mask2]) # 두 개 모두 참인 경우
#[-4 4]
버블차트 그려보기
import numpy as np
import matplotlib.pyplot as plt
x = np.random.randint(-100, 100, 1000)
y = np.random.randint(-100, 100, 1000)
size = np.random.randint(3) * 100
mask1 = abs(x) > 50
mask2 = abs(y) > 50
x = x[mask1+mask2]
y = y[mask1+mask2]
plt.scatter(x,y,s=size,c=x,cmap='jet',alpha=0.7)
plt.colorbar()
plt.show()
Author And Source
이 문제에 관하여([데이터분석]5.numpy), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jjaa9292/데이터분석5.numpy저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)