NumPy ?? : 파이썬에서 과학 계산을 위한 라이브러리로. 다차원(N차원) 배열 객체와 다양한 수학 함수를 제공한.
Numpy 특징
- 고성능 과학 계산용 패키지로 강력한 N차원 배열 객체.
- 범용적 데이터 처리에 사용 가능한 다차원 컨테이너.
- 정교한 브로드캐스팅(broadcasting) 기능.
- 파이썬의 자료형 List와 비슷하지만 더 빠르고 메모리를 효율적으로 관리.
- 반복문 없이 데이터 배열에 대한 처리를 지원하여 빠르고 편리하다.
- 데이터 과학 도구에 대한 생태계의 핵심을 이루고 있다.
NumPy 설치
배열 생성
배열 생성 및 초기화
특징 | arange() | linspace() |
값의 개수 지정 | 범위를 증가값 간격으로 나눔 | 생성할 값의 개수를 명시 |
종료값 포함 여부 | 종료값을 항상 제외 | 기본적으로 포함 |
소수점 간격 지원 | 가능 | 가능 |
랜덤값으로 배열 생성
랜덤 함수 | 설명 |
seed() | 난수 발생을 위한 시드 지정 |
permutation() | 순서를 임의로 바꾸거나 임의의 순열 반환 |
shuffle() | 리스트나 배열의 순서를 섞음 |
random() | 랜덤한 수의 배열 생성 |
rand() | 균등분포에서 표본 추출 |
randint() | 주어진 최소/최대 범위의 난수 추출 |
randn() | 표준편차가 1, 평균값이 0인 정규분포의 표본 추출 |
bionomial() | 이항분포에서 표본 추출 |
normal() | 정규분포에서 표본 추출 |
beta() | 베타분포에서 표본 추출 |
chisquare() | 카이제곱분포에서 표본 추출 |
gamma() | 감마분포에서 표본 추출 |
nuiform() | 균등(0, 1)분포에서 표본 추출 |
표준 데이터 타입
데이터 타입 | 설명 |
bool_ | 바이트로 지정도니 Boolean 으로 True 또는 False값을 가진다. |
int_ | 기본 정수 타입 |
intc | C언어에서 사용되는 int와 동일(int32 또는 int64) |
intp | 인덱싱에 사용되는 정수(C언어에서 ssize_t와 동일; 일반적으로 int32 또는 int64) |
int8 | 바이트(Byte) (-128 ~ 127) |
int16 | 정수(-32768 ~ 32767) |
int32 | 정수(-2147483648 ~ 2147483647) |
int64 | 정수(-9223372036854775808 ~ 9223372036854775807) |
uint8 | 부호없는정수(0~255) |
uint16 | 부호없는정수(0~65535) |
uint32 | 부호없는정수(0~4294967295) |
uint64 | 부호없는정수(0~18446744073709551615) |
float16 | 반정밀부동소수점(Half precision float): 부호비트,지수5비트,가수 10비트 |
float32 | 단정밀부동소수점(Single precision float): 부호비트,지수8비트,가수 23비트 |
float64 | 배정밀부동소수점(Double precision float): 부호비트,지수11비트,가수 52비트 |
float_ | float64를줄여서표현 |
complex64 | 복소수,두개의32비트부동소수점으로표현 |
comples128 | 복소수,두개의64비트부동소수점으로표현 |
comples_ | complex128을줄여서표현 |
날짜 / 시간 배열 생성
코드 | 의미 | 상대적 시간 범위 | 절대적 시간 범위 |
Y | 연 | ±9.2e18 년 | [9.2e18BC, 9.2e18 AD] |
M | 월 | ±7.6e17 년 | [7.6e17 BC, 7.6e17 AD] |
W | 주 | ±1.7e17 년 | [1.7e17 BC, 1.7e17AD] |
D | 일 | ±2.5e16 년 | [2.5e16 BC, 2.5e16 AD] |
h | 시 | ±1.0e15 년 | [1.0e15 BC, 1.0e15 AD] |
m | 분 | ±1.7e13 년 | [1.7e13 BC, 1.7e13 AD] |
s | 초 | ±2.9e12 년 | [2.9e12 BC, 2.9e12 AD] |
ms | 밀리초 | ±2.9e9 년 | [2.9e9 BC, 2.9e9 AD] |
us | 마이크로초 | ±2.9e6 년 | [2.9e6 BC, 2.9e6 AD] |
ns | 나노초 | ±292년 | [1678 AD, 2262 AD] |
ps | 피코초 | ±106일 | [1969 AD, 1970 AD] |
fs | 펨토초 | ±2.6 시간 | [1969 AD, 1970 AD] |
as | 아토초 | ±9.2초 | [1969 AD, 1970 AD] |
배열 속성 정보
속성 | 설명 |
ndim | ndarray의 차원 |
shape | 각 차원의 ndarray 크기를 튜플 형태로 나타냄 |
dtype | ndarray의 요소의 타입 |
size | ndarray에 있는 요소의 총 수 |
itemsize | 배열 각 요소의 바이트 단위 사이즈 |
nbytes | 배열에 저장된 데이터 크기를 바이트 단위로 반환 |
strides | 차원 간의 간격, 요소 간의 간격을 바이트 단위로 반환 |
배열의 인덱싱
- 인덱싱(Indexing) : 배열, 리스트 또는 기타 데이터 구조에서 특정 위치에 있는 데이터를 참조하거나 선택하는 작업.
배열에서는 인덱스(Index)라는 번호를 사용해 각 요소에 접근. - NumPy에서의 인덱싱 : NumPy 배열은 Python의 리스트와 유사하지만, 다차원 배열에서도 인덱스를 사용해 요소에 접근할 수 있다.
(**인덱스는 0부터 시작하며, 정수, 슬라이싱, 불리언 등을 통해 원하는 데이터를 선택하거나 수정할 수 있다.**)
Index 특징
- 인덱스는 0부터 시작.(첫 번째 요소의 인덱스는 0, 두 번째 요소의 인덱스는 1.)
- 인덱스는 양수와 음수 모두 사용 가능.
- 양수 인덱스 : 배열의 처음부터 순서대로 번호를 매김.
- 음수 인덱스 : 배열의 끝에서부터 역순으로 번호를 매김.
슬라이싱(Slicing) : 배열에서 일부 요소를 선택하거나 잘라내는 작업.
- 슬라이싱은 배열의 시작, 끝, 간격을 지정하여 데이터를 부분적으로 가져오는데 사용한다.
- array[시작, 끝, 간격]
- 시작 : 슬라이싱 시작 인덱스(포함)
- 끝 : 슬라이싱 종료 인덱스(제외)
- 간격 : 기본값은 1
- array[시작, 끝, 간격]
- array[0, :]
- 0, ==> 첫 번째 행만 선택.
- : ==> 모든 열 선택.
- array[:, 1]
- : ==> 모든 행 선택.
- , 1 ==> 첫 번째 열만 선택.
- array[행-인덱스, 열-인덱스]를 사용해 특정 요소에 접근.
- array[행-범위, 열-범위]를 사용해 여러 요소를 슬라이싱.
- : 는 전체 범위를 의미하고, 특정 행 또는 열을 선택.
배열 값 삽입
- insert() : 배열의 특정 위치에 값 삽입.
- append() : 배열의 끝에 값 추가.
- axis를 지정하지 않으면 1차원 배열로 변환.
- 추가할 방향을 axis로 지정.
- 2차원 배열에서 axis = 0은 행 방햔, axis = 1은 열 방향
- 3차원 배열에서 axis = 0은 높이, axis =1은 행, axis = 2는 열 방향
- 원본 배열 변경 없이 새로운 배열 반환
- 2차원 배열에서 append()
- append()는 기본적으로 배열을 펼 1차원으로 만든 뒤 값을 추가.
- 특청 축(axis)에 값을 추가하려면 axis를 지정해야 한다.
배열 값 수정
배열의 인덱싱으로 접근해 값을 수정.
'Python' 카테고리의 다른 글
[Python] 리스트와 튜플 (2) (0) | 2025.02.21 |
---|---|
[Python] 리스트와 튜플 (1) (0) | 2025.02.15 |
[Python] 비교, 논리 연산자 (0) | 2025.02.15 |
[Python] Pandas (0) | 2025.02.15 |
[Python] Numpy (2) (0) | 2025.02.14 |