Appendix. Broadcasting

dpwl·2024년 6월 25일

Data Analysis with Python

목록 보기
29/48

1. 데이터 컬럼 추가

차원이 작은 행렬 (또는 value)의 차원을 키워서 차원이 큰 행렬에 맞춰서 계산한다.

예시 1:

[1, 2, 3] + 2

다음과 같이 계산을 하면 list에서는 오류가 나지만, np.array 또는 pd.Series(pd.DataFrame)에서는 [3, 4, 5]로 값이 나온다.

아래와 같이 [1, 2, 3] + [2, 2, 2] 배열로 계산해서 결과값이 나온 것이다.

[1, 2, 3] + [2, 2, 2]

예시 2:

[1, 2, 3] + [[0], [1], [2]]

다음과 같이 계산하면 [[1, 2, 3], [2, 3, 4], [3, 4, 5]]가 나온다.

[1, 2, 3][[1, 2, 3], [1, 2, 3], [1, 2, 3]]이 되고
[[0], [1], [2]][[0, 0, 0], [1, 1, 1], [2, 2, 2]]가 된다.

[[1, 2, 3], [1, 2, 3], [1, 2, 3]] + [[0, 0, 0], [1, 1, 1], [2, 2, 2]] = [[1, 2, 3], [2, 3, 4], [3, 4, 5]]
np.array([1, 2, 3]) + 2

# array([3, 4, 5])
np.array([1, 2, 3]) + np.array([[0], [1], [2]])

# array([[1, 2, 3],
#		 [2, 3, 4],
#        [3, 4, 5]])

2. List Comprehension

[표현식 for 아이템 in 반복가능한_객체]
[표현식 for 아이템 in 반복가능한_객체 if 조건]
[표현식1 if 조건 else 표현식2 for 아이템 in 반복가능한_객체]

위와 같은 모양으로 생겼으며, 리스트 내에서 for문을 돌려서, 리스트로 만들어 준다.

ls = [표현식 for 아이템 in 반복가능한_객체]

# 또는

ls = []
for 아이템 in 반복가능한_객체:
	ls.append(표현식)

둘 다 똑같은 결과가 나온다. 그러나 성능, 간결성 부분에서 list comprehension이 더 유리하다.

식이 간결하다면 전통적인 for문보다 list comprehension을 사용하는게 유리하다.

list comprehension은 이미 리스트 내부에서 돌기 때문에 append 메소드의 시간의 영향을 받지 않는다.

profile
거북선통통통통

0개의 댓글