스마트 인재개발원/Python 기초

2021-04-10 파이썬 라이브러리(스마트인재개발원)

# # #numpy.ndarray 클래스
# # #동일한 자료형을 가지는 값들이 배열 형태로 존재함.
# # #N차원 형태로 구성이 가능하다. 
# # #각 값들은 양의 정수로 index이 부여되어있다.
# # #numpy에서 차원을 rank,axis라고 부르기도 한다
# # #ndarray를 줄여서 array로 표현한다. 
# # import numpy as np
# # list1 = [[1,2,3,4],[5,6,7,8]]
# # arr1 = np.array(list1)
# # print(arr1.shape) #1번숫자 axis 0 2번 axis 1
# # print(arr1)
# # print(arr1.size)
# # print(arr1.dtype)
# # print(arr1.ndim)

# # arr_zeros = np.zeros((3,4,2))
# # print(arr_zeros)
# # arr_arrange = np.arange(3,7)
# # print(arr_arrange)

# # arr_type = arr_type.astype('float64')

# array operation(배열 연산)
# 각자리의 값끼리 연산이 이루어지는데 array의 shape 가 동일해야만 가능 
# array 슬라이싱도 가능하다.
# 인덱싱은 값을 반환하고 슬라이싱은 범위를 반환함에 주의할 것 


# Boolean 색인
- array와 단일 연산 이루어지는 연산경과는 Boolean자료형인 연산
- 비교연산자
- Truen인 인댁스만 찾아줌 array[bolean] 이렇게 가능 

import numpy as np
name = np.array(['운비','세욱','승준','동원'])
bol = np.array([True, False, True,False])

name[bol]

name_student = np.array(['운비', '세욱', '승준', '동원'])

#각 학생별 2과목 점수

name_score = np.array([[60,60],[100,90],[80,80],[90,90]])

name_score.shape

name_student == '운비' 

name_score[name_student ==  '운비']

# Universal Function
- 전체의 값에 대해서 정해진 ~...?

#합계를 구해보자
arr = np.random.randint(1,10, size=(2,5))

print(arr.sum())
print(np.sum(arr))

#array 평균구하기
print(arr.mean())
print(np.mean(arr))

#array root
print(np.sqrt(arr))

#절대값을 씌운 array 구하기
arr = np.array([-1,1,-7,8,-11])
np.abs(arr)

np.rint(arr)

# 영화평점 데이터 구하기 실습

import numpy as np
data = np.loadtxt("ratings.txt",delimiter="::", dtype="int")
data

print(data.dtype)
print(data.shape)
print(data.ndim)
print(data.size)

movie_mean = np.mean(data[ : , 2])
movie_mean

#1번사용자의 데이터 가져오기 
data_bol = (data[:,0] == 1) 
user_1 = data[data_bol] #일번 사용자의 데이터 


#1번사용자의 평점 평균구하기
user_1_mean = np.mean(user_1[:,2])
print(user_1_mean)

#unique  각 array 값들의 중복을 제거
user_id = np.unique(data[:,0])
print(user_id.shape)
user_id

#각사용자의 평점평균을 구해보자
user_mean_list = []

for user in user_id:
    data_bol = (data[:,0] == user) 
    user_1 = data[data_bol]
    user_1_mean = np.mean(user_1[:,2])
    user_mean_list.append([user, user_1_mean])

user_mean_list

mean_data = np.array(user_mean_list)

bol=mean_data[:,1] >= 4

mean_data[:,0][bol].astype('int')

#np.savetxt('파일이름', 저장하고싶은 데이터 , delimiter = 구분자 , fmt="%3f")
np.savetxt('user_id_mean.csv', user_mean_list, delimiter=',', fmt="%.3f")