-
파이썬 확장 패키지 : numpy (1)파이썬 Python/데이터 분석 2022. 2. 14. 21:52
Numpy 패키지
- 넘파이(NumPy)는 Numerical Python의 약자로 대표적인 파이썬 기반 수치 해석 라이브러리로 알려져 있다.
특히 선형대수 연산에 필요한 다차원 배열과 배열 연산을 수행하는 다양한 함수를 제공한다.
- 데이터 분석을 위한 패키지
- 파이썬으로 과학 연산을 쉽고 빠르게 할 수 있게 만든 패키지
- 배열 데이터를 효과적으로 다룬다.
numpy 1차원 배열 생성
import numpy # 리스트 생성 data1 = [1, 2, 3, 4, 5] data2 = [1.7, 2, 5.5, 7, 9.9] data3 = [1.7, 2, '5.5', 7, 9.9] print(data1) print(data2) print(data3) print('-' * 30) # numpy 1차원 배열 생성 : 리스트로 numpy 배열 만들기 # ndarray : n dimension array (다차원 배열) arr1 = numpy.array(data1) print(arr1) print(type(arr1)) # 자료형 확인 print(arr1.dtype) # 데이터 종류 확인 print(arr1.shape) # 배열 형태 확인 print() # 단일 데이터만 취급 # => 정수와 실수가 섞여 있으면 모두 실수로 변환 arr2 = numpy.array(data2) print(arr2) print(arr2.dtype) print(arr2.shape) print() # 단 1개라도 문자열이 섞여 있으면, 모두 문자열로 변환됨 arr3 = numpy.array(data3) print(arr3) print(arr3.dtype) print(arr3.shape)[1, 2, 3, 4, 5]
[1.7, 2, 5.5, 7, 9.9]
[1.7, 2, '5.5', 7, 9.9]
------------------------------
[1 2 3 4 5]
<class 'numpy.ndarray'>
int32
(5,)
[1.7 2. 5.5 7. 9.9]
float64
(5,)
['1.7' '2' '5.5' '7' '9.9']
<U32
(5,)numpy 2차원 배열 생성 : numpy.array()
import numpy data1 = [1, 2, 3] data2 = [4, 5, 6] data3 = [7, 8, 9] # numpy 2차원 배열 생성, []를 ()로 묶는다. arr1 = numpy.array([data1, data2, data3]) # 저장 내용 확인 print("arr1 :") print(arr1) # numpy 배열 속성확인 print("arr1 type :", type(arr1)) print("arr1 배열 데이터 타입 :", arr1.dtype) print("arr1 배열 형태 :", arr1.shape)arr1 :
[[1 2 3]
[4 5 6]
[7 8 9]]
arr1 type : <class 'numpy.ndarray'>
arr1 배열 데이터 타입 : int32
arr1 배열 형태 : (3, 3)범위를 지정해서 배열 생성
import numpy # 범위를 지정해서 numpy 배열 생성, # arange([start,] stop[, step]) arr1 = numpy.arange(0, 10, 2) # 1~9까지 2씩 arr2 = numpy.arange(1, 10) # 1~9까지 arr3 = numpy.arange(5) # 4까지 # 저장 내용 확인 print("arr1 :", arr1) print("arr2 :", arr2) print("arr3 :", arr3) print() # numpy 배열 속성확인 print("arr1 type :", type(arr1)) print("arr1 배열 데이터 타입 :", arr1.dtype) print("arr1 배열 형태 :", arr1.shape)arr1 : [0 2 4 6 8]
arr2 : [1 2 3 4 5 6 7 8 9]
arr3 : [0 1 2 3 4]
arr1 type : <class 'numpy.ndarray'>
arr1 배열 데이터 타입 : int32
arr1 배열 형태 : (5,)m x n 행렬로 변경 (2차원)
import numpy arr1 = numpy.arange(1, 13) print("arr1 :", arr1) print("arr1 배열 형태 :", arr1.shape) # reshape()을 통해 차원을 변경할 때는 데이터 개수가 일치해야 함 # 2차원 배열로 변경 arr2 = arr1.reshape(3, 4) # 3행 4열로 변경 print("arr2 :") print(arr2) print("arr2 배열 형태 :", arr2.shape) print() # 데이터 개수에 상관없이 변경(행) : -1 사용 arr2 = arr1.reshape(3, -1) print("arr2 :") print(arr2) print("arr2 배열 형태 :", arr2.shape) # 데이터 개수에 상관없이 변경(열) : -1 사용 arr2 = arr1.reshape(-1, 3) print("arr2 :") print(arr2) print("arr2 배열 형태 :", arr2.shape) print('-') # 3차원 배열로 변경 arr3 = arr2.reshape(2, 2, 3) # 2행3열이 2개 (면, 행, 열) print("arr3 :") print(arr3) print("arr3 배열 형태 :", arr3.shape) print() # 4차원 배열로 변경 arr4 = arr2.reshape(2, 2, 3, 1) # 3행1열이 2개씩 들어간것 이 2개 print("arr4 :") print(arr4) print("arr4 배열 형태 :", arr4.shape) print() # 4차원 배열을 1차원 배열로 변경 -1 arr1 = arr4.reshape(12) print("arr1 :", arr1) print("arr1 배열 형태 :", arr1.shape) print() # 4차원 배열을 1차원 배열로 변경 -2 arr1 = arr4.reshape(-1) print("arr1 :", arr1) print("arr1 배열 형태 :", arr1.shape)arr1 : [ 1 2 3 4 5 6 7 8 9 10 11 12]
arr1 배열 형태 : (12,)
arr2 :
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
arr2 배열 형태 : (3, 4)
arr2 :
[[ 1 2 3 4]
[ 5 6 7 8]
[ 9 10 11 12]]
arr2 배열 형태 : (3, 4)
arr2 :
[[ 1 2 3]
[ 4 5 6]
[ 7 8 9]
[10 11 12]]
arr2 배열 형태 : (4, 3)
-
arr3 :
[[[ 1 2 3]
[ 4 5 6]]
[[ 7 8 9]
[10 11 12]]]
arr3 배열 형태 : (2, 2, 3)
arr4 :
[[[[ 1]
[ 2]
[ 3]]
[[ 4]
[ 5]
[ 6]]]
[[[ 7]
[ 8]
[ 9]]
[[10]
[11]
[12]]]]
arr4 배열 형태 : (2, 2, 3, 1)
arr1 : [ 1 2 3 4 5 6 7 8 9 10 11 12]
arr1 배열 형태 : (12,)
arr1 : [ 1 2 3 4 5 6 7 8 9 10 11 12]
arr1 배열 형태 : (12,)시작과 끝 범위, 데이터 개수를 지정해서 numpy 배열 생성
import numpy # 범위의 시작과 끝을 지정하고 데이터 개수를 지정해서 numpy 배열을 생성 # linspace(start, end, 개수) arr1 = numpy.linspace(1, 5, 10) print("arr1 :") print(arr1) print("arr1 type :", type(arr1)) print("arr1 배열 데이터 타입 :", arr1.dtype) print("arr1 배열 형태 :", arr1.shape) print() arr2 = numpy.linspace(-1, 1, 50) print("arr2 :") print(arr2) print("arr2 type :", type(arr2)) print("arr2 배열 데이터 타입 :", arr2.dtype) print("arr2 배열 형태 :", arr2.shape)arr1 :
[1. 1.44444444 1.88888889 2.33333333 2.77777778 3.22222222
3.66666667 4.11111111 4.55555556 5. ]
arr1 type : <class 'numpy.ndarray'>
arr1 배열 데이터 타입 : float64
arr1 배열 형태 : (10,)
arr2 :
[-1. -0.95918367 -0.91836735 -0.87755102 -0.83673469 -0.79591837
-0.75510204 -0.71428571 -0.67346939 -0.63265306 -0.59183673 -0.55102041
-0.51020408 -0.46938776 -0.42857143 -0.3877551 -0.34693878 -0.30612245
-0.26530612 -0.2244898 -0.18367347 -0.14285714 -0.10204082 -0.06122449
-0.02040816 0.02040816 0.06122449 0.10204082 0.14285714 0.18367347
0.2244898 0.26530612 0.30612245 0.34693878 0.3877551 0.42857143
0.46938776 0.51020408 0.55102041 0.59183673 0.63265306 0.67346939
0.71428571 0.75510204 0.79591837 0.83673469 0.87755102 0.91836735
0.95918367 1. ]
arr2 type : <class 'numpy.ndarray'>
arr2 배열 데이터 타입 : float64
arr2 배열 형태 : (50,)모든 원소가 0 또는 1인 numpy 배열 생성
import numpy # 모든 원소가 0인 numpy 배열 생성 arr1 = numpy.zeros(10) arr2 = numpy.zeros((2, 3)) arr3 = numpy.zeros((2, 3, 4)) print("arr1 :") print(arr1) print("arr2 :") print(arr2) print("arr3 :") print(arr3) print("arr1 배열 데이터 타입 :", arr1.dtype) print("arr1 배열 형태 :", arr1.shape) print("arr2 배열 형태 :", arr2.shape) print("arr3 배열 형태 :", arr3.shape) print() # 모든 원소가 1인 numpy 배열 생성 arr1 = numpy.ones(10) arr2 = numpy.ones((2, 3)) arr3 = numpy.ones((2, 3, 4)) print("arr1 :") print(arr1) print("arr2 :") print(arr2) print("arr3 :") print(arr3) print("arr1 배열 데이터 타입 :", arr1.dtype) print("arr1 배열 형태 :", arr1.shape) print("arr2 배열 형태 :", arr2.shape) print("arr3 배열 형태 :", arr3.shape)arr1 :
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
arr2 :
[[0. 0. 0.]
[0. 0. 0.]]
arr3 :
[[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]]
arr1 배열 데이터 타입 : float64
arr1 배열 형태 : (10,)
arr2 배열 형태 : (2, 3)
arr3 배열 형태 : (2, 3, 4)
arr1 :
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
arr2 :
[[1. 1. 1.]
[1. 1. 1.]]
arr3 :
[[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]
[[1. 1. 1. 1.]
[1. 1. 1. 1.]
[1. 1. 1. 1.]]]
arr1 배열 데이터 타입 : float64
arr1 배열 형태 : (10,)
arr2 배열 형태 : (2, 3)
arr3 배열 형태 : (2, 3, 4)단위 행렬 생성
import numpy # 단위 행렬로 numpy 배열 생성 # n x n 정사각형 행렬에서 주 대각선이 모두 1이고 나머지는 0인 행렬 arr1 = numpy.eye(3) # 저장 내용 확인 print("arr1 :") print(arr1) print("--------------") # numpy 배열 속성확인 print("arr1 type :", type(arr1)) print("arr1 배열 데이터 타입 :", arr1.dtype) print("arr1 배열 형태 :", arr1.shape)arr1 :
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
--------------
arr1 type : <class 'numpy.ndarray'>
arr1 배열 데이터 타입 : float64
arr1 배열 형태 : (3, 3)'파이썬 Python > 데이터 분석' 카테고리의 다른 글
Matplotlib (1) - 그래프 (0) 2022.02.16 파이썬 확장 패키지 : numpy (2) (0) 2022.02.15 반복문 - while (0) 2022.02.09 반복문 - for (0) 2022.02.08 변수, 입력 (0) 2022.02.07