Python

파이썬 기본 정리

쿠와와 2020. 11. 17. 23:27

사실 기초라고 하기보단 조금 난이도가 있는 코딩에 대해 설명할 것이다.

 

컴프리헨션(Comprehension)

 

Comprehension을 보다 제대로 이해하기 위해서는 기본적으로 파이썬의 조건문, 반복문 등의 개념을 알고 있으셔야 하며 해당 개념은 리스트, 집합(set), 딕셔너리(dictionary) 자료형에 대해 사용될 수 있기 때문에, 해당 자료형에 대해서도 알아야 제대로 이해할 수 있다. 

 

말은 거창하지만 간단하게 말해 프로그램이 빨라지고 가독성 좋게 한줄로 만들어버리는 것이다. 

 

a = 'hello'
여기서 a 를 다른 곳으로 옮기고 싶을 때 다른 언어 같은 경우에는

 

for( int i = 0 ; i <len(a) ; i++ )

    c += i;

 

뭐 이런 식으로 for 문을 돌려 따로 빼줘야 한다. 

 

하지만 파이썬에서는


c = [i for i in a]

 

이런식으로 한줄로 변경이 가능하다는 것이다. 

 

 

 

리스트 중 유용하게 쓰이는 것들 

 

간단하게

a = [[random.randrange(100) for _ in range(4)] for _ in range(3)]

2차원 변수가 있다고 하자. 

 

이것을 1차원 변수로 변환을 할 때 위의 방법을 사용한다면

b = [j for i in a for j in i]

 

이런식으로 사용하자 .

왜 차원 이동을 설명하느냐 나중에 인공지능 공부할 때 종종 쓰이곤 한다.

 

리스트 계산은 numpy를 사용하는 것이 간단하다.

행은 행끼리 계산해주고 열은 열끼리 매칭후 계산해주기 때문이다.

 

여기서 a라는 함수가 

a = np.arange(6) 라고 해보자  이떄 행 열 계산

print(a)
print(a.reshape(1, 6))
print(a.reshape(1, 6) + a)
print(a.reshape(6, 1) + a)  

이것을 직접해보기를 권장한다. 계산이 어떻게 진행되는지 사진으로 보여주겠다. 

보면 6행 1열 짜리를 1행 6열을 더했더니 6행 6열의 함수가 되어버렸다. 

numpy는 그렇다. 

 

또한 -1 과 : 를 자주 쓰는데

리스트에서 -1은 마지막 배열이라는 소리이다

그렇다면 

a[-2] 는 무엇을까?

 

a에 들어있는 마지막에서 2번째 숫자라는 것이다 .

알아두고 두고두고 쓰면 좋다

: 는 다 아니깐 넘어가겠다. 

 

np.argmax(a)  

이것도 자주 쓰는 함수중에 하난대 배열 안에 가증 큰값을 출력해주는 함수이다. 

 

배열 연산중에

 

x_train = np.vstack([mnist.train.images, mnist.validation.images]) # 열로 쌓음
x_test = np.hstack([mnist.train.labels, mnist.validation.labels]) # 행으로 쌓음
x_test = np.concatenate([mnist.train.labels, mnist.validation.labels]) # 그냥 연결하는 방식을 사용

 

이러한 세가지 방법의 배열을 합쳐주는 함수가 있다. 몰랐어서 정리하게 됐다.

데이터 셋
연산 결과

2차원에서 열로 쌓는 다는 것은 열만 알고 있다면 합쳐줄 수 있다는 것이고

행으로 쌓는 다는 것은 행만 안다면 쌓아줄 수 있다는 것이다. 

concatenate로는 둘다 연결해줄 수 있다.

'Python' 카테고리의 다른 글

파이썬 sklearn의 preprocessing 과 model_selection  (0) 2020.11.18