배워서 남 주자

개발 및 개발환경/Python 4

[Pandas] 특정 list내에 있는 것들로만 추출하려면? isin!

이번 포스팅에서는 pandas dataframe 내부 method인 isin을 알아보도록 하겠습니다. 다음과 같은 dataframe이 있다고 해보겠습니다. df = pd.DataFrame(np.arange(10, 30).reshape(10, 2), columns=['a', 'b']) print(df) 이 dataframe의 a열에서 [20, 22, 24]를 포함하는 행만 추출하고 싶다면 어떻게 해야할까요? 처음에는 아래와 같이 나이브하게 접근했더니 다음과 같은 에러가 떴습니다. target_list = [20, 22, 24] print(df[df['a'] in target_list]) ValueError: The truth value of a Series is ambiguous. Use a.empty, ..

[Python] List 내의 중복된 element 제거하기

이번 포스팅에서는 List 내의 중복을 제거하는 방법을 알아보도록 하겠습니다. 가장 간단한 경우로, list가 scalar형 값들을 가지고 있는 경우 list와 set으로 중복을 제거할 수 있습니다. 기본적으로 set은 말 그대로 집합을 의미하죠. 수학에서도 그렇지만 집합 내에서는 index가 따로 있지 않고 그저 그 집합안에 있다, 없다가 중요하기 때문에 이를 이용해 중복을 제거합니다. 예를 들어, 수학에서는 $$ \{1,2,3,1,1,2\} = \{1,2,3\} = \{3,2,1\}$$ 인 것처럼, 중복된 값을 표현하는 것이 의미없을 뿐만 아니라, 표기하는 순서가 다르다고 절대 다른 집합을 가리키지 않습니다. Python에서도 마찬가지인데요. set을 취해주면 말 그대로 set type으로 변환이 되..

[Numpy] np.stack에 대한 이해

np.stack은 쌓고자 하는 array와 어떤 방향으로 쌓을지 결정해주는 axis 파트가 있습니다. Staking된 결과를 보면 오히려 헷갈리기 때문에, 저 같은 경우는 shape을 기준으로 어떻게 쌓이는지 우선 관찰하는 편입니다. 예를 들어 아래의 코드처럼 보면 좀 더 이해가 쉽다는 것입니다. import numpy as np a = np.arange(1, 3, 1).reshape(1, 2) b = np.arange(3, 5, 1).reshape(1, 2) c = np.arange(5, 7, 1).reshape(1, 2) s0 = np.stack((a, b, c), axis=0) s1 = np.stack((a, b, c), axis=1) s2 = np.stack((a, b, c), axis=2) pr..

[Numpy] Matrix에 Vector를 Broadcasting하기

원래 수학에서는 당연히 같은 공간에 있는 것들끼리만 연산이 가능하지만, python의 세계에서는 어떤 의미에서는 직관적으로 broadcasting이라는 기능을 제공하죠. 특히 numpy array가 연산에 대해서 좀 더 직관적인 기능을 수행하게끔 해줍니다. 예를 들어 numpy array에서 scalar를 연산해주면, 아래의 예처럼 broadcasting이 일어납니다. import numpy as np np_arr = np.array([1, 2, 3, 4, 5]) sclr = 3 print(np_arr * sclr) # array([3, 6, 9, 12, 15]) 여기까지는 아마 모두 잘 아시리라 생각합니다. hierarchy를 하나 올려서, 2d-array (matrix)에 1d-array (vecto..