브로트캐스팅에 대해 알아보겠습니다. 일반적으로 ndarray는 배열이 행렬으로 되어있습니다. 보통 행렬은 같은 모양끼리 연산을 할 수 있습니다. ndarray도 행렬로 이루어져 있으므로 배열이 같은 형식끼리 연산을 하게 되는게 일반적입니다. 하지만 예외적으로 numpy에서는 배열 모양이 달라도 연산을 할 수 있습니다. 이런 예외적인 계산방식을 Broadcasting(브로드캐스팅)이라고 합니다. 그림과 같은 방식의 계산이 일어납니다. numpy 안에 내장되어 있는 브로드캐스팅 기능으로 편리하게 계산을 할 수 있습니다. 주의할 점은 브로드캐스팅이 되려면 그림과 같이 뒷차원의 배열과 같아야 합니다. import numpy as np a = np.arange(15).reshape(3,5) b = np.arang..
axis(축)에 대해 이야기해볼까 합니다. 축의 원리는 다 비슷하기 때문에 한번 알아두면 벡터형식의 배열을 다루는데 큰 도움이 됩니다. 함수를 그릴려면 2차원은 x,y축을 그렸었고 3차원은 x,y,z축을 그립니다. 위 그림처럼 그렸었는데 numpy에서는 x축을 axis=0, y축을 axis=1,z축을 axis=2로 여깁니다. 그렇지만 ndarray는 그림처럼 축으로 나눠지는 그래프가 아니고, 벡터와 행렬형식의 배열이기 때문에 축을 어떻게 여기는가가 관건입니다. ndarray에서는 x축이 row 기준,y축은 column기준,z해 이야기해볼까 합니다. 축의 원리는 다 비슷하기 때문에 한번 알아두면 벡터형식의 배열을 다루는데 큰 도움이 됩니다. 함수 그래프에서는 axis의 번호를 붙이지 않았지만 numpy에서..
ndarray를 가지고 연산과 통계를 이끌어내봅시다. Jupyter에서 numpy를 np로 바꾸고 시작하겠습니다. 먼저 np. 하고 tap을 누르면 아래와 같은 조그마한 창이 뜹니다. 이게 np로 할 수 있는 함수들을 나열해놓은 창입니다. 스크롤을 내려보면 정말 많은 함수가 내장되어 있는지 느낄 수 있을겁니다. 이 많은 함수를 다 일일히 배울수는 없습니다. 혹시 자신이 써야 하는 함수에 대해서 알고 싶다면 Jupyter에서 해당 함수에 커서를 놓은후 shift+tap을 누르면 자세한 설명이 나와있으니 그걸 참고하시면 좋을 것 같습니다. shift +tap 을 누르면 위와 같은 창이 뜹니다. 이번 포스팅에서는 ndarray의 연산과 통계, 집계를 할 때에 쓰는 함수들을 소개할까 합니다. 함수가 굉장히 많지..
ndarray의 형태 바꾸는 방식을 설명하겠습니다. reshape reshape로 바꾸는 방법입니다. 원하는 모든 모양으로 바꿀 수 있습니다. 당연한 거지만 꼭 주의해야 할 것은 ndarray가 가지고 있는 숫자와 맞아야 합니다. 예를 들어, np.arange(16)로 하면 가능한 모양은 (3,5),(5,3),(15,1),(1,15) 만 가능합니다. 다른 모양을 하라고 명령하면 숫자가 맞지 않는다는 오류가 뜹니다. import numpy as np x = np.arange(15) print(x) x.reshape(3,5) x는 15개의 원소로 이루어진 모양이(15,)인 ndarray였는데 (3,5)로 바꾼 것을 볼수 있습니다. flatten flatten은 모든 배열을 다 1차원 배열로 만들어줍니다. 즉..
주어진 ndarray 인덱스는 어떻게 이루어져 있고 슬라이싱은 어떻게 하는지 소개하겠습니다. 결론적으로 말하면 파이썬의 리스트를 다루었던 방법과 동일합니다. 다른 점이 있다면 리스트에서는 1차원의 경우만 다뤘지만 ndarray는 2차원이상도 인덱싱, 슬라이싱을 다루어야 하는게 다릅니다. 하지만 파이썬의 리스트에서 다루었던 인덱싱, 슬라이싱과 다름없이 다룰 수 있습니다. import numpy as np 항상 numpy를 쓰려면 import를 먼저 해야겠죠. 1차원 인덱싱, 슬라이싱 x = np.arange(10) print(x) 간단하게 0부터 9까지의 나열을 보겠습니다. 여기서 3을 가져오고 싶습니다. 그럼 3의 인덱스를 알아야합니다. 3의 인덱스는 무엇일까요? 파이썬의 리스트에서처럼 3이 됩니다. 다..
numpy의 random모듈을 이용해 랜덤한 값들을 생성하는 방법에 대해 알아보겠습니다. 먼저 numpy를 np로 바꿔서 쓰겠습니다. import numpy as np rand 함수 np.random.rand(2,3) rand 함수는 0,1 사이에서 랜덤하게 숫자를 가져와 ndarray를 만듭니다. rand가로 안에는 형태를 써주면 ndarray가 생성됩니다. randn 함수 np.random.randn(2,3) randn 함수는 정규분포로 샘플링된 된 ndarray를 생성합니다. 그래서 -1에서 1 사이의 값들이 랜덤하게 나오면서 생성합니다. randint 함수 np.random.randint(1,100,size=(1,5)) randint에 커서를 놓고 shift+tap을 누르면 다음과 같이 어떤 파라..
ndarray를 생성하는 다양한 방법을 소개하겠습니다. 생성에 앞서 numpy를 불러오겠습니다. import numpy as np import를 하면 모듈을 불러올 수 있습니다. numpy가 잘 설치가 되었다면 아마 오류없이 불러올 수 있을 겁니다. 앞으로 numpy를 np로 변경해서 쓰겠습니다. np.array 함수로 생성 x = np.array([1,2,3,4]) y = np.array([[2,3,4],[1,2,3])) print(x) print(y) ndarray는 np.array로 생성할 수 있는데 수학시간에 배운 행렬과 동일하게 생성됩니다. np.array 안에 대가로로 행렬을 표시합니다. 2차원이상일 경우에도 대가로 안에 두개의 리스트를 넣어서 생성할 수 있습니다. np.arange 함수로 생..
Numpy 파이썬이 잘 쓰이지 않은 큰 이유가 바로 계산속도입니다. 계산속도가 느리면 데이터 처리를 하거나 코드 명령이행을 하면 결과를 도출하는데 시간이 많이 걸리게 됩니다. 그러면 당연히 다른 언어를 쓰는게 훨씬 효율적입니다. 파이썬의 계산속도 문제를 해결하기 위해서 Numpy라는 모듈을 씁니다. Numpy는 수치 배열 데이터를 다루기 위해 사용하는데 보통 파이썬의 리스트와 비슷하게 생겼고 효율적인 계산과 다양한 선형수학을 다룰 수 있습니다. 또한 numpy로 인해 계산속도를 개선해서 파이썬만의 직관적이고 간단한 언어를 가지고 데이터 처리를 할 수 있다는 큰 장점이 생기게 되었습니다. Numpy 장점 1. 파이썬 리스트보다 계산 속도가 빠름. 2. 파이썬 리스트보다 적은 메모리 사용. 3. 선형대수,통..