-
Python 라이브러리와 Numpy2ML&DL&AI/Python 2023. 6. 15. 18:01728x90
1. Boolean 색인(인덱싱)
- 필터링의 기능을 담당
- 조건에 해당하는(True) 값만 출력 할 때 사용
- 조건에 해당하는 값이 존재하는지 모를 때 사용
1.1 예시
- 배열 안에서 조건을 충족하는 True인 값들만 추출해주는 인덱싱 방법
# 1부터 10까지 증가하는 1차원 넘파이 배열 arr1d = np.arange(1,11) print(arr1d) print(arr1d > 5)
[ 1 2 3 4 5 6 7 8 9 10] [False False False False False True True True True True]
- 5보다 큰 값만 출력을 원하는 경우
print(arr1d[arr1d > 5])
[ 6 7 8 9 10]
- 다른 배열에서 조회하면 위치 정보로 해당 위치의 값이 출력
# 점수로 알아보기 score = np.array([80,75,55,96,30]) print(score) # 80점 이상인 경우 print(score >= 80)
[80 75 55 96 30] [ True False False True False]
name = np.array(['A','B','C','D',"F"]) score[name == 'A']
array([80])
2. numpy 범용함수
- 범용함수란? 널리퍼져있는 수학함수
- sum(), mean(), max(), min()
2.1 예시
#arr라는 변수 랜덤수(1~10)들어 있는 크기가 2행 5열인 배열 생성 arr = np.random.randint(1,10,size=(2,5)) print(np.sum(arr)) print(np.mean(arr)) print(np.max(arr)) print(np.min(arr))
52 5.2 9 2
3. Numpy 실습
- 영화 리뷰 평점 데이터 분석
3.1 데이터 확인
- np.loadtxt으로 오류 발생시 np.getfromtxt으로 교체
import numpy as np movie = np.genfromtxt("ratings.txt", delimiter = '::',dtype = 'int') print(movie)
[[ 1 1193 5 978300760] [ 1 661 3 978302109] [ 1 914 3 978301968] ... [ 6040 562 5 956704746] [ 6040 1096 4 956715648] [ 6040 1097 4 956715569]]
1.2 데이터 속성 확인
- 배열의 크기, 개수, 타입, 차원
print("배열의 차원 :",movie.ndim) print("배열의 크기 :",movie.shape) print("배열의 전체 요소 개수 :",movie.size) print("배열의 타입 :",movie.dtype)
배열의 차원 : 2 배열의 크기 : (1000209, 4) 배열의 전체 요소 개수 : 4000836 배열의 타입 : int32
1.3 전체 영화의 평점 평균구하기
- 전체 데이터에서 평점의 위치 찾기!
- 평균 구하기!
# 전체 데이터엥서 평점만 가져오기 # score_mean 변수에 담아주기 score_mean = movie[:,2] print(score_mean) # 평점의 평균을 구해보자 print(np.mean(score_mean))
[5 3 3 ... 5 4 4] 3.581564453029317
1.4 1번 사용자가 매긴 평점의 평균 구해보기
- 전체데이터에서 사용자의 위치
- 1번 사용자만 보고 싶다면?(boolean 인덱싱)
- 전체데이터에서 1번 사용자만 존재하는 데이터 확인
- 1번 사용자가 매긴 평점의 평균 구하기
# 전체 데이터에서 사용자의 위치 user_id = movie[:,0] print(user_id) #사용자 아이디 중에서 1번 사용자 아이디만 가져오기 # 논리 연산만 진행 print(user_id == 1) # 전체데이터에서 1번 사용자만 존재하는 데이터 user_id_1 = movie[user_id == 1] # 1번 사용자가 매긴 평점의 평균 구하기 user_id_1_mean = user_id_1[ : , 2] print(np.mean(user_id_1_mean))
[ 1 1 1 ... 6040 6040 6040] [ True True True ... False False False] 4.188679245283019
1.5 총 몇명의 사용자가 평점을 매겼는지 알아보자
- 사용자의 아이디의 유일한 값 구하기(중복제거)
- unique() : 유일한 값을 구해주는 함수
user_id_unique = np.unique(user_id) print(user_id_unique) print(user_id_unique.size)
[ 1 2 3 ... 6038 6039 6040] 6040
1.6 각 사용자가 매긴 평점의 평균을 구해보자
user_mean_list = [] for i in user_id_unique : user_mean = movie[user_id == i, 2].mean() user_mean_list.append([i, user_mean]) user_mean_list
[[1, 4.188679245283019], [2, 3.7131782945736433], [3, 3.9019607843137254], [4, 4.190476190476191], [5, 3.1464646464646466], ...]
1.7 각 사용자들의 평점 평균 중에서 4점 이상의 평점만 구하기
# 배열의 요소간 연산이 가능하도록 리스트를 array로 변환 user_mean_arr = np.array(user_mean_list,dtype='int') # 4점이 넘는 사람의 아이디에 접근 # 그 사람들의 인원수를 계산 user_mean_arr[user_mean_arr[:,1]>=4].size
3088
728x90'ML&DL&AI > Python' 카테고리의 다른 글
Python 라이브러리와 Numpy (0) 2023.06.14 python 함수 (0) 2023.06.13 Python 딕셔너리(dictionary) (0) 2023.06.13 python 반복문 (0) 2023.06.12 python 리스트와 튜플 (0) 2023.06.08