728x90
1. numpy 개요
Numerical Python을 의미 → 파이썬에서 선형 대수 기반의 프로그램을 쉽게 만들 수 있도록 지원
루프를 사용하지 않고 대량 데이터의 배열 연산을 가능하게 함 → 빠른 배열 연산 속도를 보장
2. numpy 배열 생성
1) numpy 임포트
import numpy as np #넘파이 임포트
2) numpy 생성
a1=np.array([1,2,3]) #넘파이 생성
print(a1) #결과 : [1 2 3]
3) numpy 타입, 크기, 차원
print('array1 type : ',type(a1) ) #결과 : array1 type : <class 'numpy.ndarray'> 배열의 타입
print('array1 shape : ', a1.shape) #결과 : array1 shape : (3,) 배열의 크기
print('array1 dim : ',a1.ndim) #결과 : array1 dim : 1 배열의 차원
4) arange 함수
a=np.arange(10) #arange함수 0부터 x-1까지의 배열 생성
print(a) #결과 : [ 0 1 2 3 4 5 6 7 8 9]
a=np.arange(1,10,3) #arange함수 x부터 y-1까지 z만큼 증가하는 배열 생성
print(a) #결과 : [ 1 4 7]
3. numpy 배열 초기화
1) 0 또는 1로 초기화
zero_a=np.zeros((2,4)) #0으로 채워진 2X4 배열 초기화
one_a=np.ones((3,3)) #1으로 채워진 3X3 배열 초기화
print(zero_a) #결과 : [[0. 0. 0. 0.]
# [0. 0. 0. 0.]]
print(one_a) #결과 : [[1. 1. 1.]
# [1. 1. 1.]
# [1. 1. 1.]]
2) zero_like 함수
zero_b=np.zeros_like(one_a) #이미 생성된 배열 초기화
print(zero_b) #결과 : [[0. 0. 0.]
# [0. 0. 0.]
# [0. 0. 0.]]
3) one_like 함수
one_b=np.ones_like(zero_a)
print(one_b) #결과 : [[1. 1. 1. 1.]
# [1. 1. 1. 1.]]
4) full, random 함수
full_a=np.full((2,3),9) #특정 상수로 배열 초기화
rand_a=np.random.random((2,4)) #랜덤 값으로 초기화
print(full_a) #결과 : [[9 9 9]
# [9 9 9]]
print(rand_a) #결과 : [[0.55560458 0.53254566 0.45070128 0.79803767]
# [0.20161269 0.23030577 0.49311109 0.52979636]]
5) eye 함수
eye_a=np.eye(4) #주 대각선의 원소 1 나머지 0인 대각행렬
print(eye_a) #결과 : [[1. 0. 0. 0.]
# [0. 1. 0. 0.]
# [0. 0. 1. 0.]
# [0. 0. 0. 1.]]
4. numpy 배열 크기 변형
1) reshape 함수
array1=np.arange(12) #0부터 x-1까지 배열
print('array1 : \n', array1) #결과 : array1 :
# [ 0 1 2 3 4 5 6 7 8 9 10 11]
array2=array1.reshape(3,4) #원하는 형태로 재배열 기본적으로 행부터 채워 넣음
print('array2 : \n', array2) #결과 : array2 :
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]
array3=array1.reshape(4,3,order='F') #값을 열부터 채워 넣음
print('array3 : \n', array3) #결과 : array3 :
# [[ 0 4 8]
# [ 1 5 9]
# [ 2 6 10]
# [ 3 7 11]]
2) reshape 응용
array1=np.arange(10)
array2=array1.reshape(-1,5) #컬럼 5에 맞는 행 개수로 자동 변환 재배열
print(array2) #결과 : [[0 1 2 3 4]
# [5 6 7 8 9]]
print('array2 dim : ',array2.ndim) #결과 : array2 dim : 2
print('array2 shape : ',array2.shape) #결과 : array2 shape : (2, 5)
3) reshape 다차원 변형
array1=np.arange(12)
array2=array1.reshape(2,3,2,order='F') #2X3X2 형태로 값을 열부터 채워넣음
print(array2) #결과 : [[[ 0 6]
# [ 2 8]
# [ 4 10]]
#
# [[ 1 7]
# [ 3 9]
# [ 5 11]]]
print('array2 dim : ',array2.ndim) #결과 : array2 dim : 3
print('array2 shape : ',array2.shape) #결과 : array2 shape : (2, 3, 2)
4) flatten 함수 (1차원 변형)
array3=array2.flatten()
print(array3) #결과 : [ 0 6 2 8 4 10 1 7 3 9 5 11]
5. numpy 배열 데이터 추출하기
1) 인덱싱
배열의 요소에 해당하는 인덱스 값을 [ ] 안에 입력하여 한 개의 데이터를 추출.
array1 = np.arange(1,10)
print('array1 : ',array1) #결과 : array1 : [1 2 3 4 5 6 7 8 9]
value1=array1[2] #인덱스는 0부터 시작하므로 3번째 인덱스 위치의 데이터 값인 3을 의미
value2=array1[-2] #-2는 맨 뒤에서부터 두번째의 데이터 값인 8을 의미
print(value1) #결과 : 3
print(value2) #결과 : 8
array1=np.arange(1,10)
array2=array1.reshape(3,3)
print('array2 : \n', array2) #결과 : array2 :
# [[1 2 3]
# [4 5 6]
# [7 8 9]]
value1=array2[0,0]
value2=array2[-1,-1]
value3=array2[-1,-2]
print(value1) #결과 : 1
print(value2) #결과 : 9
print(value3) #결과 : 8
2) 슬라이싱
[x:y] 기호를 이용하여 연속한 데이터를 추출. x부터 y-1까지의 인덱스 위치에 있는 범위의 배열을 반환
array1=np.arange(1,10) #[1 2 3 4 5 6 7 8 9] 형태
array2=array1[0:3]
array3=array1[:3]
array4=array1[3:]
print(type(array2)) #결과 : <class 'numpy.ndarray'>
print(array2) #결과 : [1 2 3]
print(array3) #결과 : [1 2 3]
print(array4) #결과 : [4 5 6 7 8 9]
array1=np.arange(1,10)
array2=array1.reshape(3,3)
print('array2 : \n',array2) #결과 : array2 :
# [[1 2 3]
# [4 5 6]
# [7 8 9]]
print('array2[0:2,0:2]\n',array2[0:2,0:2])#결과 : array2[0:2,0:2]
# [[1 2]
# [4 5]]
print('array2[:2,1:]\n',array2[:2,1:]) #결과 : array2[:2,1:]
# [[2 3]
# [5 6]]
6. numpy 선형대수 기본연산
1) 행렬 내적(행렬 곱)
array1=np.array([[1,2,3],
[4,5,6]])
array2=np.array([[7,8],
[9,10],
[11,12]])
dot_array=np.dot(array1,array2)
print(dot_array) #결과 : [[58 64]
# [139 154]]
2) 전치 행렬
행과 열 위치를 교환한 원소로 구성한 행렬
array1=np.array([[1,2,3],
[4,5,6]])
transpose_array=np.transpose(array1)
print(transpose_array) #결과 : [[1 4]
# [2 5]
# [3 6]]
7. numpy 기술통계
1) 배열 데이터 개수 계산 len()
x=np.array([18,5,10,23,19,-8,10,0,0,5,2,15,8,2,5,4,15,-1,4,-7,-24,7,9,-6,23,-13])
len(x) #결과 : 26
2) 평균, 분산, 표준편차 계산 mean(), var(), std()
print(np.mean(x)) #결과 : 4.8076923076923075
print(np.var(x)) #결과 : 115.23224852071006
print(np.std(x)) #결과 : 10.734628476137871
3) 최댓값, 최솟값, 중앙값 계산 max(), min(), median()
print(np.mean(x)) #결과 : 4.8076923076923075
print(np.var(x)) #결과 : 115.23224852071006
print(np.std(x)) #결과 : 10.734628476137871
4) 사분위수 계산 percentile(x,y)
print(np.percentile(x,25)) #결과 : 0.0 1사분위수
print(np.percentile(x,50)) #결과 : 5.0 2사분위수
print(np.percentile(x,75)) #결과 : 10.0 3사분위수
728x90
'기타(🎸X) > 빅데이터' 카테고리의 다른 글
[빅데이터] 파이썬 빅데이터 분석 패키지 - scikit-learn (0) | 2023.05.30 |
---|---|
[빅데이터] 파이썬 빅데이터 분석 패키지 - pandas (0) | 2023.05.29 |
[빅데이터] 데이터 비식별화 기법 (0) | 2023.05.09 |
[빅데이터] 빅데이터 플랫폼 (0) | 2023.02.25 |
[빅데이터] 빅데이터 조직 및 인력 (0) | 2023.02.24 |
댓글