-
python-06 numpy코딩/python 2023. 5. 4. 18:24
1. numpy
numpy는 Python에서 배, 행렬 등 수치 연산을 수행하는 라이브러리이다. 다차원 배열 객체와 함께 작동하는 도구들을 제공하며 내부적으로는 C로 구현되어 있어 연산이 빠른 속도로 수행된다.
2. 배열 생성
import numpy as np
numpy 모듈을 불러와 일반적으로 np로 사용한다.
arr = np.array([1,2,3,4]) print(arr) print(type(arr)) [1 2 3 4] <class 'numpy.ndarray'>
numpy.ndarray의 타입을 가진 1차원 배열이 생성된것을 확인할 수 있다.
#zeros, ones, empty를 사용하여여 배열 생성 car = np.zeros((3,3)) print(car) [[0. 0. 0.] [0. 0. 0.] [0. 0. 0.]] np.ones((3,3)) array([[1., 1., 1.], [1., 1., 1.], [1., 1., 1.]]) np.empty((4,4)) array([[2.18418596e-316, 0.00000000e+000, 6.93433028e-310, 6.93435442e-310], [6.93435432e-310, 6.93435433e-310, 6.93435383e-310, 6.93435380e-310], [6.93433020e-310, 3.21142670e-322, 2.14090344e-316, 6.93435482e-310], [6.93433020e-310, 6.93433022e-310, 6.93433020e-310, 6.93433020e-310]])
3*3의 형태를 가진 2차원 배열을 생성할 수 있다. zeros와 ones는 각각 배열을 0과 1로 채우며 empty의 경우 컴퓨터의 메모리는 초기화되지 않기 때문에 불규칙한 쓰레기 값이 들어가 있다.
np.arange(1,10,2) array([1, 3, 5, 7, 9])
11에서 10까지 +2를 하며 배열을 생성한다.
arr = np.array([[1,2,3],[4,5,6]]) print(arr) [[1 2 3] [4 5 6]]
2차원 배열을 생성한다.
3. 배열 확인
arr.ndim 2
ndim으로 위에서 생성한 배열이 2차원임을 확인할 수 있다.
arr.shape (2, 3)
shape로 배열의 모양이 세로 2개, 가로 3개의 모양을 가지고 있음을 확인할 수 있다.
a = np.arange(10) print(a) [ 0 1 2 3 4 5 6 7 8 9 ] b=a.reshape((2,5)) print(b) [[ 0 1 2 3 4] [ 5 6 7 8 9]
reshape를 사용하여 배열의 모양을 원하는 모양으로 바꿀 수 있다.
4. 배열 슬라이싱
arr = np.array([[1,2,3,], [4,5,6], [7,8,9]]) arr_1 = arr[0:2,1:3] print(arr_1) [[2 3] [5 6]]
세로 0번부터 1번행 가로 1번부터 2번행까지 슬라이스된것을 볼 수 있다.
arr = np.array([[1,2,3],[4,5,6],[7,8,9]]) arr[1,1] 5
2번째 배열에서 2번째 숫자를 추출할 수 있다.
arr = np.array([[1,2,3],[4,5,6]]) idx = arr > 3 idx array([[False, False, False], [ True, True, True]]) arr[idx] array([4, 5, 6])
조건식을 이용하여 슬라이스할 수 있다.
5. 실습
redwine = np.loadtxt(fname='winequality-red.csv', delimiter=';', skiprows=1) #구분자는 ;이고 첫번째줄은 건너뛴다
레드와인 데이터를 불러온다.
print(redwine) redwine.shape [[ 7.4 0.7 0. ... 0.56 9.4 5. ] [ 7.8 0.88 0. ... 0.68 9.8 5. ] [ 7.8 0.76 0.04 ... 0.65 9.8 5. ] ... [ 6.3 0.51 0.13 ... 0.75 11. 6. ] [ 5.9 0.645 0.12 ... 0.71 10.2 5. ] [ 6. 0.31 0.47 ... 0.66 11. 6. ]] (1599, 12)
1599*12의 레드와인 데이터 모양을 확인할 수 있다.
print(redwine.sum()) print(redwine.sum(axis=0)) print(redwine.mean(axis=0)) 152084.78194 [13303.1 843.985 433.29 4059.55 139.859 25384. 74302. 1593.79794 5294.47 1052.38 16666.35 9012. ] [ 8.31963727 0.52782051 0.27097561 2.5388055 0.08746654 15.87492183 46.46779237 0.99674668 3.3111132 0.65814884 10.42298311 5.63602251]
sum은 합계, mean은 평균, std는 표준편차, var은 분산, min, max는 최소,최대값이다.
2차원에서 axis 0는 행을 의미하며 axis 1은 열을 의미한다. 다르게 말하면 숫자가 낮을수록 높은 차원이다.
print(redwine[:,0].mean()) 8.31963727329581
첫번째 행의 전체 데이터의 평균을 출력한다.
'코딩 > python' 카테고리의 다른 글
python-08 matplotlib (0) 2023.05.04 python-07 pandas (0) 2023.05.04 python-05 예외처리 (0) 2023.05.02 python-04 class (0) 2023.05.02