티스토리 뷰
Numpy를 복습했다.
import numpy as np
◎ 연산 속도 비교
my_arr = np.arange(1000000)
my_list = list(range(1000000))
백만 개의 정수를 저장하는 numpy 배열과 list를 각각 하나씩 만들었다.
그런 다음 numpy 배열과 list 각각에 2를 곱하는 함수를 정의하고 연산에 걸리는 시간을 측정한다. (%)
%time for _ in range(10): my_arr2 = my_arr * 2
%time for _ in range(10): my_list2 = [x * 2 for x in my_list]
사용하는 개발환경마다 속도는 다르겠으나 내 경우에는 32.4 ms / 1.11s로 전자가 월등히 빠른 것을 확인할 수 있었다.
◎ ndarray의 생성, 변환
array 함수로 배열을 생성할 수 있고, 리스트를 배열로 변환할 수 있다.
data1 = [6, 7.5, 8, 0, 1]
arr1 = np.array(data1)
리스트를 배열화하면 .dtype 메서드로 type을 확인할 수 있다.
data1.dtype
arr1.dtype
전자는 에러가 나지만 후자는 dtype('int32')라고 알려준다.
◎ 명시적 변환 casting
.astype 메서드로 배열의 dtype을 명시적 형변환할 수 있다.
arr = np.array([1, 2, 3, 4, 5])
arr.dtype
int32 dtype 배열을 float64형 dtype으로 변환하였다.
float_arr = arr.astype(np.float64)
float_arr.dtype
astype을 활용해 숫자 형식의 문자열을 담은 배열을 숫자형 배열로 변환할 수도 있다.
numeric_strings = np.array(['1.25', '-9.6', '42'], dtype=np.string_)
numeric_strings.astype(float)
다루고자 하는 데이터가 숫자 내용의 문자열 데이터인 경우 유용할 듯.
◎ 조각과 전파 slicing and broadcasting
배열을 잘라낸 다음에 스칼라값을 대입하면 대입값을 선택 영역 전체로 전파할 수 있다.
※리스트와의 차이점: 배열 조각은 데이터를 복사하는 것이 아니라 원본에 대한 뷰이므로, 뷰를 변경하면 원본 배열에 변경이 반영된다.
arr = np.arange(10)
arr[5:8] = 12
먼저 0부터 9까지의 정수를 가지는 배열을 생성한 다음 arr[5]부터 arr[7]까지의 세 원소를 12로 대체한다.
arr_slice = arr[5:8]
arr_slice
arr_slice[1] = 12345
arr
arr[5:8]을 arr_slice로 정의한 다음 arr_slice를 확인해 보면 5, 6, 7이 모두 12로 변경된 것을 확인할 수 있다.
또 arr_slice의 첫 번째 원소를 12345로 바꾼 다음 원본 배열 arr을 호출하면 6이 12에서 다시 12345로 바뀌어 있다.
arr_slice[:] = 64
arr_slice = 64
이상은 잘라낸 arr_slice의 모든 원소를 동일한 값으로 바꾸어주는 코드이며 윗줄과 아랫줄 모두 동일하게 작동한다.
✔ Numpy는 데이터를 복사하지 않는다는 점에 주목하자.
만약 데이터를 복사하고 싶다면 .copy() 메서드를 활용하여 명시적으로 배열을 복사해야 한다.
arr.copy()
arr[5:8].copy()
이런 식의 사용이 가능할 것이다.
'공부 > Python' 카테고리의 다른 글
네이버 부스트코스 '모두를 위한 파이썬' 스터디 참여! (1) | 2022.07.11 |
---|---|
20210122 오늘공부: Numpy 기본함수 다루기 (0) | 2021.01.23 |
파이썬 핵심함수(기본함수, 수집, 처리) #2 BeautifulSoup을 이용한 html 파싱 기본 (0) | 2020.12.21 |
20201221 오늘의 공부 (0) | 2020.12.21 |
미래의 나를 위해 남겨두는 문자열 리스트 정형화 함수 (0) | 2020.12.18 |
- Total
- Today
- Yesterday
- Notion2Tistory
- 이력서
- 빅데이터분석기사
- 인공지능
- 데이터준전문가합격후기
- todayIlearned
- data annotation
- ai부트캠프
- 빅분기후기
- ADsP
- 빅분기
- github
- ADsP합격후기
- Til
- Kaggle
- 개발자포트폴리오
- 깃허브
- 취업준비
- 데이터과학
- 커리어코칭
- googlecolab
- 빅분기합격
- 자격증
- 빅데이터
- 자버
- 코드스테이츠
- 데이터준전문가
- 이자포스터디
- 데이터분석
- 코테공부
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |