# 내부 파일 숫자 확인 naver_12 = os.listdir(src_dir) naver_22 = os.listdir(src_dir1) len(naver_12), len(naver_22), print(len(naver_12)+len(naver_22))
1 2 3 4 5 6 7 8 9 10
# src_dir에 있는 모든 파일을 dst_dir폴더로 옮기기 for fname in naver_12: src = os.path.join(src_dir, fname) dst = os.path.join(dst_dir, fname) shutil.copyfile(src, dst) # src_dir에 있는 모든 파일을 dst_dir폴더로 옮기기 for fname in naver_22: src1 = os.path.join(src_dir1, fname) dst = os.path.join(dst_dir, fname) shutil.copyfile(src1, dst)
1 2 3
# dst_dir 폴더 내부의 수량 확인하기 dstfolder = os.listdir(dst_dir) len(dstfolder)
1 2 3 4
# 숫자가 1개 모자라는 이유 파악하기 # 특정이름의 파일 가져오기 path_dir = './naver_34/'# file path file_list = os.listdir(path_dir) # 파일이름을 변수에 담고
1 2 3
for item in file_list: if item.find('DS') isnot-1: print(item)
# 1차원 벡터 x = np.array([1, 2, 3, 4]) print(x) # 2차원 행렬(2행 3열), 리스트안에 리스트로 만듬 y = np.array([[2, 3, 4], [1, 2, 5]]) print(y) # 타입 확인 print(type(y)) # 차원 확인 print(x.ndim, y.ndim)
np.arange 함수로 생성하기
1 2
# 0 ~ 9까지 ndarray 생성 np.arange(10)
1 2
# 1 ~ 9까지 ndarray 생성 np.arange(1, 10)
1 2
# 1 ~ 9까지 2칸씩 띄어서 생성 np.arange(1, 10, 2)
1 2
# 5 ~ 100까지 5의 배수 생성 np.arange(5, 101, 5)
zeros, ones
1 2
# 4행 5열의 모든 원소가 1인 ndarray 생성, 튜플을 이용하여 생성 np.ones((4, 5))
1 2 3
# 3차원 tensor 생성 # 3행 4열의 행렬 2개, 대괄호가 3개 생김 np.ones((2, 3, 4))
1 2 3
# 4차원 생성 # 대괄호가 4개 생김 np.zeros((2, 3, 8, 8))
1 2
# 초기화된 ndarray 생성 np.empty((3, 4))
1 2
# 7로만 이루어진 tensor 생성 np.full((3, 4), 7)
1 2 3
# 5행 5열의 단위 행렬 2차원 # 대각선의 모든 값이 1, 나머지 0 np.eye(5)
np.linspace
1 2 3
# 시작, 끝, 전체 수가 3개가 되도록 나눔 # 원소간의 차이가 동일하게 만듬 np.linspace(1, 10, 3)
1 2
# 숫자 사이 간격이 동일하게 np.linspace(1, 10, 4)
1 2 3
# 4등분, 전체 갯수 5 # 그래프에서 x축에 균등하게 값을 줄 때 사용 np.linspace(1, 10, 5)
reshape
1 2 3 4 5 6
# 1 ~ 15까지 벡터 생성 x = np.arange(1, 16) print(x)
# 1차원의 shape x.shape
1 2
# 2차원의 행렬로 형태를 바꿈, 3행 5열로 변경 x.reshape(3, 5)
1
x. reshape(5, 3)
1 2
# 3차원으로 바꿈, 3행 1열이 5개 x.reshape(5, 3, 1)
1 2 3
# 숫자 20개 필요하나 x안에는 15개만 있으므로 대응이 불가능하여 오류 발생 # reshape 하려는 숫자가 원래 존재하는 숫자와 동일한지 확인 필요 x.reshape(5, 4)
random 서브 모듈 이용하여 ndarray 생성히기
랜덤한 값을 생성
보통 train 전 초반에 무작위 값을 생성
1 2 3
# rand 함수, 2행 3열의 랜덤한 값 생성 # 0과 1 사이의 값이 생성 np.random.rand(2, 3)
1 2
# 1차원 벡터 np.random.rand(10)
1 2
# 3차원 tensor, 4행 2열 np.random.rand(3, 4, 2)
1 2 3 4
# 정규분포, n: normal distribution(정규분포) # 정규분포로 샘플링된 랜덤 ndarrya 생성 # 정규분포이므로 음수값도 생성 np.random.randn(3, 4)
randint 함수
정수에서 샘플링할 때 사용
1 2 3
# 정수에서 샘플링할 때 사용 # 1 ~ 99, 3행 5열 2차원 행렬 np.random.randint(1, 100, size=(3, 5, 2))
seed 함수
랜덤한 값을 동일하게 다시 생성하고자 할 때 사용
고정된 랜덤 값
1 2 3
# 항상 호출 전 동일한 값을 갖고 싶을 때 사용 np.random.seed(100) np.random.randn(3, 4)
# 2. 모두 소문자로 변경 result = sentence.lower() # lower함수는 리턴이 있는 함수이므로 result에 저장
# 3. 가장 앞글자를 대문자로 변경 result = result[0].upper() + result[1:] # 가장 앞글자 + 나머지 글자
# 4. 마지막 문자가 .인지 확인해서 .이 아니면 .을 추가 if result[-1] != ".": result += "."
result
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
# 6자리의 로또번호를 생성하는 코드를 작성하세요. # 6자리의 번호는 중복이 없어야 합니다. # 문자열, 숫자, 리스트 # while, not in, in, list.append(), break, len(), list.sort() # 문제가 조금 복잡하면 간단한 기능부터 구현하고 업데이트를 하는 방법으로 해결 # 랜덤한 숫자 6개 출력 -> 숫자가 중복되지 않는 코드를 추가
lotto = [] # 랜덤한 숫자 6개를 while문을 사용해서 작성 whileTrue: num = random.randint(1, 45) # 숫자를 추가할 때 lotto 리스트에 중복되는 숫자가 없으면 추가 if num notin lotto: lotto.append(num) if len(lotto) >= 6: lotto.sort() break lotto
# user_data를 입력받아서 아이디와 패스워드를 체크하는 데코레이터 함수를 코드로 작성하세요. # 로그인 될 때마다 count를 1씩 증가 defneed_login(func): defwrapper(*args, **kwargs):# inner function 만듬 # 아아디 패스워드 입력 user, pw = tuple(input("insert user pw : ").split(' ')) # user와 pw 나눈 후 tuple로 변환 # 존재하는 아이디와 패스워드 확인 for idx, user_data in zip(range(len(user_datas)), user_datas): # 카운트하기 위해 몇 번째 데이터인지 확인필요 if (user_data['user'] == user) and (user_data['pw'] == pw): user_datas[idx]['count'] += 1# 유저 데이터의 인덱스에서 카운트를 1씩 증가 시킴 # 함수 실행 return func(*args, **kwargs) # wrapper 함수 종료, 결과값 출력 return"wrong login data!" return wrapper
# user_data를 입력받아서 아이디와 패스워드를 체크하는 데코레이터 함수를 코드로 작성하세요. # 로그인 될 때마다 count를 1씩 증가 def need_login(func): def wrapper(*args, **kwargs): # inner function 만듬 # 아아디 패스워드 입력 user, pw = tuple(input("insert user pw : ").split(' ')) # user와 pw 나눈 후 tuple로 변환 # 존재하는 아이디와 패스워드 확인 for idx, user_data in enumerate(user_datas): # 카운트하기 위해 몇 번째 데이터인지 확인필요 if (user_data['user'] == user) and (user_data['pw'] == pw): user_datas[idx]['count'] += 1 # 유저 데이터의 인덱스에서 카운트를 1씩 증가 시킴 # 함수 실행 return func(*args, **kwargs) # wrapper 함수 종료, 결과값 출력 return "wrong login data!" return wrapper