# 넘파이 불러오기
import numpy as np
# 0~9까지 1차원 배열
arr = np.array([0,1,2,3,4,5,6,7,8,9])
arr
# 혹은
arr1 = np.arange(0,10)
arr1
출력 : array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
# 인덱싱
# 배열[인덱스 번호]
arr1[3]
출력 : 3
# 슬라이싱
# 배열[인덱스 번호 : 인덱스 번호 끝값]
arr1[1:5]
출력 : array([1, 2, 3, 4])
# 처음부터 끝까지 슬라이싱 해보기!
arr1[0:10]
# 혹은 arr1[:]
출력 : array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
# 인덱싱하고자 하는 값이 여러개일 때
# 1, 4, 7번째 접근하고 싶을때
arr1[[1,4,7]]
출력 : array([1, 4, 7])
# 배열 요소 값 변경 (수정)
arr1[3:9] = 7
arr1
출력 : array([0, 1, 2, 7, 7, 7, 7, 7, 7, 9])
arr2 = np.arange(0, 50).reshape(5, 10)
arr2
출력 : array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
[20, 21, 22, 23, 24, 25, 26, 27, 28, 29],
[30, 31, 32, 33, 34, 35, 36, 37, 38, 39],
[40, 41, 42, 43, 44, 45, 46, 47, 48, 49]])
# 1행 인덱싱
arr2[1]
출력 : array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
# 넘파이 제공하는 행, 열 인덱싱 방법
# 배열[행, 열]
arr2[3,8]
출력 : 38
# 행은 모든 행이고, 열은 1번째 열에 접근
arr2[:,1]
출력 : array([ 1, 11, 21, 31, 41])
# 행은 2,4번째 행이고, 열은 모든 열에 접근
arr2[[2,4],:]
출력 : array([[20, 21, 22, 23, 24, 25, 26, 27, 28, 29],
[40, 41, 42, 43, 44, 45, 46, 47, 48, 49]])
# 2칸씩 출력
arr2[[2,4],:7:2]
출력 : array([[20, 22, 24, 26],
[40, 42, 44, 46]])
# True, False 불리언 값을 이용하여 인덱싱하는 방법 접근하고자 하는 데이터의 정확한 위치를 파악하기 어려울때 많은 데이터에 접근할 때 조건식, 논리식을 이용하여 연산하게 만듦 -> True, False 배열[[True, False, ....]]
# Boolean 하기 전 예시 배열 생성
name_socre = np.random.randint(50,101, size = 8)
name_socre
출력 : array([ 62, 100, 66, 51, 94, 79, 73, 63])
name_socre >= 85
출력 : array([False, True, False, False, True, False, False, False])
# 논리식을 세워서 name_socre에 적용
# 85 이상인 점수 데이터에 접근 하고자 함
name_socre[name_socre >= 85]
출력 : array([98, 91])
10명에 대한 키, 몸무게 데이터를 이용하여 bmi지수를 구하고 과제충 이상인 bmi값 확인 과체중 이상이 몇명인지 확인
# 1.데이터 불러오기
# np.loadtxt('파일경로 및 확장자', delimiter=',')
data = np.loadtxt('data/height_weight.txt', delimiter=',')
# 데이터 속성 확인
# 배열의 크기, 요소 개수, 데이터 타입 등
# f 문자열 포매팅
print(f'data의 크기 : {data.shape} ')
print('data의 크기 : {}'.format(data.shape))
print('data의 요소 개수 : ',data.size)
print('data의 타입 : ',data.dtype)
출력 : data의 크기 : (2, 10)
data의 크기 : (2, 10)
data의 요소 개수 : 20
data의 타입 : float64
# 0번째 행에 있는 데이터는 뭘 의미하나요? 키 cm
data[0]
출력 : array([175.2, 180.3, 175. , 169.2, 185.2, 188. , 177.6, 178.2, 177. , 179. ])
data[0,:]
출력 : array([175.2, 180.3, 175. , 169.2, 185.2, 188. , 177.6, 178.2, 177. , 179. ])
# 1번째 행이 의미하는건 뭘까요? 몸무게 kg
data[1]
출력 : array([65.6, 88. , 79.2, 69.3, 55. , 71.2, 73. , 68.9, 74. , 82. ])
1. 키(0행)와 몸무게(1행)를 각각 다른 변수에 저장
2. 키 단위 변경 1m = 100cm
3. bmi식에 적용해서 bmi값을 구함
4. bmi값을 담은 배열을 과체중 이상인지 판별하는 논리식 적용
# 1. 키(0행)와 몸무게(1행)를 각각 다른 변수에 저장
# 2. 키 단위 변경 1m = 100cm
data_height = data[0] * 0.01
data_weight = data[1]
# 3. bmi식에 적용해서 bmi값을 구함
data_bmi = data_weight / (data_height * data_height)
data_bmi
출력 : array([21.37153104, 27.07018468, 25.86122449, 24.20652885, 16.03543423,
20.14486193, 23.14392095, 21.69720651, 23.62028791, 25.59220998])
data_over = data_bmi[data_bmi >= 23]
data_over
출력 : array([27.07018468, 25.86122449, 24.20652885, 23.14392095, 23.62028791, 25.59220998])
# 4. bmi값을 담은 배열을 과체중 이상인지 판별하는 논리식 적용
# size , shape , len() 이런것들로 데이터의 개수 확인 가능
print(data_over.size)
print(data_over.shape)
print(len(data_over))
출력 :
6
(6,)
6
# 아까 만들어둔 배열 출력
arr1
출력 : array([0, 1, 2, 7, 7, 7, 7, 7, 7, 9])
# sum 함수 - 총 합 구하는 기능
np.sum(arr1)
출력 : 54
# mean함수 평균값을 구해주는 기능
# arr2 평균
np.mean(arr2)
출력 : 24.5
# sqrt함수 - 제곱근을 구해주는 기능
np.sqrt(arr1)
출력 : array([0. , 1. , 1.41421356, 2.64575131, 2.64575131,
2.64575131, 2.64575131, 2.64575131, 2.64575131, 3. ])
# abs함수 - 절대값을 구해주는 기능
arr = np.array([-1, 0, 1, -2, -3])
arr
출력 : array([-1, 0, 1, -2, -3])