안녕하세요 오늘은 데이터 수집을 위한 numpy에 대해 소개해보겠습니다
1. numpy 설치
$ pip install numpy
2. numpy 배열 생성
data = [5,6,7,8]
arr = np.array
print(arr)
기본적인 numpy 배열 생성 방법입니다
3. asarray()
arr3 = np.asarray( arr2 )
display_arr(arr3)
arr2 를 복사하는 방법이지만 array()와 다른점은 사본 변경 시 같이 변경됩니다
4. arange()
arr = np.arange(1, 5, 2)
arr
출력
array([1, 3])
1 부터 5 전까지의 숫자를 2의 간격으로 출력 python에서 기본적으로 사용되는 range와 사용방법이 같습니다
5. reshape()
np.arange(1, 17).reshape( (4,4) )
1 ~ 16까지의 숫자를 생성 후 4,4의 구조로 바꾸는 방법입니다
reshape은 자주 쓸것같은데 저는 생각보다 쓸일이 많이 없었습니다
6. np.zeros((2,3))
arr = np.zeros( (2,3) )
arr
배열 구조안에 값을 0으로 넣는 방법입니다
zeros는 생각보다 자주 사용하게 됩니다
7.astype()
tmp = arr.astype(np.int64)
tmp.dtype
출력 타입을 지정해주는 방법으로 간혹 사용됩니다
8. 인덱싱
arr[0], arr[0][-1]
출력
(array([1, 2, 3]), 3)
arr = [1, 2, 3] 배열에서 인덱싱 했을때의 결과로 0은 첫번째 숫자, -1은 뒤에서 첫번째 숫자를 의미하며 [ ]는 배열의 차원을 의미합니다
그러므로 [0][-1]은 첫번째 배열의 마지막숫자를 의미합니다
9. 슬라이싱
arr = np.arange( 16 ).reshape( (2,8) )
arr[ :-1 , 1:1+3 ]
출력
array([[1, 2, 3]])
슬라이싱은 의미 그대로 자르는 방법으로 사용됩니다
':-1' : 1차원 배열에서 마지막 전까지 즉 1차원이 2개이기 때문에 첫번째 배열만 불러옵니다
'1:1+3' : 2차원 배열에서 1, 두번째 숫자부터 1+3, 4번째 숫자까지 입니다
10.블리언 인덱싱
arr[ arr > 0 ]
arr[ (arr>1) | (arr<0) ]
블리언 인덱싱은 조건에 따라 나누는 방법으로 사용됩니다
arr > 0 이면 이라는 뜻으로 조건에 해당할 시 0이나 제거하여 결측치를 제거하는 방식으로 사용됩니다
두번째 또한 조건으로 1보다 크거나 0보다 작을 시 제거하거나 =0, 값을 0으로 만드는 방식으로 사용됩니다
11. 팬시 익덱싱
arr = np.arange(32).reshape(8,4)
----
arr[ [3,1, 0, 4] ]
출력
array([[12, 13, 14, 15],
[ 4, 5, 6, 7],
[ 0, 1, 2, 3],
[16, 17, 18, 19]])
----
arr[ [3,1, 0, 4], [2,1,3,0]]
출력
array([14, 5, 3, 16])
----
arr[ [3,1, 0, 4] ][ : , [2,1,3,0] ]
출력
array([[14, 13, 15, 12],
[ 6, 5, 7, 4],
[ 2, 1, 3, 0],
[18, 17, 19, 16]])
----
arr[ [3,1, 0, 4] ][ : , [2,1,3] ]
출력
array([[14, 13, 15],
[ 6, 5, 7],
[ 2, 1, 3],
[18, 17, 19]])
팬시 익덱싱은 비연속적인 데이터를 추출할때 사용됩니다
일명 마구잡이 순서로 있을때 필요한 데이터만 수집하도록 사용됩니다
arr는 2차원의 배열일때를 가정했습니다
arr[[3,1,0,4]] 1차원에서 인덱스를 기준으로 순서를 재배치 합니다
arr[[3,1,0,4], [2,1,3,0]] 값을 지정해서 가져옵니다
arr[[3,1,0,4]][:, [2,1,3,0]] 2차원 데이터는 모두, 그 순서들은 [2,1,3,0]
1차원 배열의 순서는 [3,1,0,4]의 구조로 변경됩니다
한번에 작성하고 설명을 작성하니 그리 보기 좋지가 않네요,,
12. 축변경 .T
arr.T
사실상 데이터 수집, 데이터 분석까지 생각해보면 가장 많이 사용하게 되는 기능입니다 축을 변경하는 방법으로
(2,8)의 구조를 (8,2) 처럼 바꾸는 방법입니다
가장 많이 사용되는게 의외인 기능이지만 데이터를 확인할때 많이 사용됩니다
13. 축이동
arr = np.arange(24).reshape( (2,3,4) )
arr.transpose( (2,0,1) ).shape, arr.transpose( (2,0,1) )
출력
((4, 2, 3)
array([[[ 0, 4, 8],
[12, 16, 20]],
[[ 1, 5, 9],
[13, 17, 21]],
[[ 2, 6, 10],
[14, 18, 22]],
[[ 3, 7, 11],
[15, 19, 23]]]))
3차원 배열의 축이동으로 2번축을 맨앞으로, 0번축을 그다음, 1번축을 마지막에 배치 하는 방법입니다
'Python > 데이터 수집' 카테고리의 다른 글
[데이터 수집]BS4, BeautifulSoup 웹 스크래핑 (0) | 2024.01.29 |
---|---|
[데이터 수집] 데이터 종류와 API 데이터 수집 (1) | 2024.01.29 |