일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 데이터분석
- 하둡
- HIVE
- 데이터
- R그래프
- R프로그래밍
- 주가예측
- NLP
- Python
- lstm
- 자연어처리
- R시각화
- pandas
- 그래프
- word2vec
- 기계학습
- 빅데이터처리
- Deeplearning
- SQL
- ggplot
- 그래프시각화
- 데이터시각화
- AI
- r
- Hadoop
- 데이터처리
- CNN
- 머신러닝
- 딥러닝
- 빅데이터
- Today
- Total
욱이의 냉철한 공부
[Python, 정리] Numpy 사용하기 본문
1 .NumPy, ndarray
- NumPy에는 N차원의 배열 객체인 ndarray가 있고 파이썬에서 사용할 수 있는 대규모 데이터 집합을 담을 수 있는 빠르고 유연한 자료구조이다.
- 모든 원소는 같은 자료형
2. NumPy 객체 만드는 방법 및 함수
- import numpy as np : numpy 라이브러리를 호출
- data = np.arrange(10) : 파이썬의 range 함수의 배열 버전이다. 리스트 대신 ndarray를 반환한다.
- data = [[1,2,3,4],[5,6,7,8]]
arr = np.array[data]
- data = np.zeros(10) : 0 반환, 0으로 초기화 하는 것이다. , 누적합 구할 때 자주 사용.
data = np.zeros((3,6))
- data = np.empty((2,3,2))
zeros와 다르게 값의 메모리에 이미 값이 있으면 0이 아닌 그 값을 반환한다.
- 난수 생성
data = np.random.randn(2,3) : 표준편차 1, 평균 0인 정규분포에서 표본 추출
data = np.random.normal(size=(4,4)) : size는 튜플, 정규분포에서 표본 추출
data = np.random.randint(0,1) : 주어진 최소,최대 범위 안에서 난수 생성
data = np.random.rand(2,3) : 균등분포에서 표본 추출
3. NumPy 객체 속성
shape : 각 차원의 크기를 알려줌
- data.shape
ndim
dtype : 배열에 저장된 자료형을 알려줌
- data.dtype
size
T
4. NumPy 배열 원소 접근 방법 : 뷰로 생성됨
1) Indexing
- 여러 개의 데이터들의 집합인 뭉탱이에서 색인(요소들을 지칭하는 것)하는 것이다.
- arr[5]
- arr[0][2]
- arr[0,2]
2) Slicing
- 부분범위를 지정하는 것이다.
- arr_slice = arr[5:8]
- 리스트와의 차이점은 배열조각이 원본 배열의 뷰라는 점이다. 뷰에 대한 변경은 원본 배열에 반영한다.
이유 : 대용량 데이터 처리를 염두에 두고 설계되었기 때문에 데이터 복사를 남발한다면 성능과 메모리 문제에 직면할 것이다.
arr_slice[1] = 12345
arr 결과값 : array([0,1,2,3,4,12,12345,12,8,9])
- arr.copy() 함수 사용하면 원본값 유지 할 수 있다.
- 축(axis)이란? : 차원의 개수
벡터는 1차원 배열이기 때문에 축이 1개이면 차원도 1개이다.
[1,2,3,4,5,6,7] -> axis = 0
슬라이싱의 첫번째 기준은 0번축이다.
arr2d[:2], arr2d[:2, 1:] -> 결과값은 2차원배열. 첫번째 기준은 0번축
arr2d[1,:2] -> 결과값은 1차원 배열
* Boolean Indexing
- true, false를 통해 인덱싱, 슬라이싱 할 수 있다.
- 반복기능을 통해 비교해야 하지만 array 같은 경우는 가능하다.
names = ['bob','job','will','bob'] : 리스트
names == 'bob' -> for 문을 돌려야 비교가능하다.
np.array(names)
names == 'bob' -> 한 번에 비교 가능하다.
- 스칼라는 0 아닌 값은 전부 True이다.
- 공백, 문자는 true이다. 문자 없는 경우는 false이다.
Fancy Indexing
- 순서 개념을 입혔다.
- arr[[4,3,0,6]] -> 0번축 기준으로 숫자는 순서를 의미한다.
arr[[1,5,7,2],[0,3,1,2]] -> 좌표라고 생각
- 1 2 3
4 5 6
7 8 9
10 11 12
arr[[3,1,2]][:0:1] : 범위의 값 순서대로 출력
-> 10 11 12
4 5 6
7 8 9
5. Numpy : Brodadcating
- (4,3) + (3) = (4,3)
0 0 0 1 2 3 1 2 3
1 1 1 1 2 3 2 3 4
2 2 2 1 2 3 3 4 5
3 3 3 1 2 3 4 5 6
- 차원 수가 다르면 차원이 적은 쪽에 차원을 추가하는데 이 때 차원 수는 1
- 차원 수가 같으면 차원의 크기가 모두 같거나 한 쪽의 차원의 크기가 1이여지만 브로드 캐스팅이 가능하다
- 차원이 1인 쪽은 상대방 차원의 수와 일치시킨다. - 복제
- R 같은 경우는 제한 없이 복제해서 계산한다.
6. Python : List Comprehension
- names = ['bob','job','will','bob']
result = [name=='bob' for name in names]
- for문 보다 빠르다
7. Python : Generator & Generator Expression
8. NumPy : Universal Function
- 데이터 원소별로 연산을 수행하는 함수.
- 하나 이상의 스칼라 값을 받아서 하나 이상의 스칼라 결과 값을 반환하는 간단한 함수를 고속으로 수행할 수 있는 벡터화된 래퍼 함수라고 생각하면 된다.
- np.sqrt(), np.modf() 등등..
9. np.where() : 조건
- arr = np.random.randn(4,4)
np.where(arr>0,2,-2)
np.where(arr>0,2,arr)
10. ndarray.sort() vs. numpy.sort()
- ndarray.sort() : in-place operation(직접 데이터를 수정한다.)
- numpy.sort() : returning
'데이터분석 > Python : Basic' 카테고리의 다른 글
[Python, 정리] Pandas - 데이터 그룹연산 (0) | 2022.03.28 |
---|---|
[Python, 정리] Pandas - 데이터 처리 (0) | 2022.03.28 |
[Python] pandas 사용하기 (0) | 2022.03.28 |
[Python, 정리] 데이터 타입 이해하기 (0) | 2022.03.28 |