Python

[Python] Numpy(1)

orin602 2025. 1. 25. 18:16

NumPy ?? : 파이썬에서 과학 계산을 위한 라이브러리로. 다차원(N차원) 배열 객체와 다양한 수학 함수를 제공한.

Numpy 특징

  • 고성능 과학 계산용 패키지로 강력한 N차원 배열 객체.
  • 범용적 데이터 처리에 사용 가능한 다차원 컨테이너.
  • 정교한 브로드캐스팅(broadcasting) 기능.
  • 파이썬의 자료형 List와 비슷하지만 더 빠르고 메모리를 효율적으로 관리.
  • 반복문 없이 데이터 배열에 대한 처리를 지원하여 빠르고 편리하다.
  • 데이터 과학 도구에 대한 생태계의 핵심을 이루고 있다.

NumPy 설치

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[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