[Python] Numpy 라이브러리 (1)

2021. 3. 26. 22:40·프로그래밍 Programming/파이썬 Python

List가 기본적으로 파이썬에서 제공하는 collection이지만 데이터 분석에 사용하기에는 불편한 점이 있다.

- element 단위로 계산하는 것이 불편하다.

 

Numpy가 데이터 분석에 적절한 라이브러리가 될 수 있다.

 

사용하기 쉽고 빠르며, 계산이 전체 array에 적용될 수 있다.

 

Numpy의 특징

homogeneous collection of "iterms" of the same "data-type" (dtype)

linear algebra 등의 수학적 내용을 적용하기 편리하다.

C, C++, FORTRAN과 잘 호환된다.

 

ndarray : a fast and space-efficient multidimensional array providing vectorized arithmetic operations and sophisticated broadcasting capabilities

Numpy가 빠른 이유는 array 자체에 data를 담고 있기 때문이다. List는 데이터의 주소를 저장하고 그 주소에 또

데이터가 저장되어있다. 그래서 데이터에 접근하기 위해서는 데이터 주소를 가져오고, 그 주소로 데이터를 가져오는 두 단계를 거쳐야 하기 때문에 numpy보다 느리다.

 

ndarray에 대한 설명

 

1. Create ndarrays

 

list를 만들어서 np.array()안에 넣는 방법

np.zeros, np.ones, np.zeros_like, np.ones_like, np.arange

np.arange는 1차원 array만 출력하기 때문에 reshape를 이용해서 차원을 바꿔줘야한다.

 

full : np.full((2,3),5) 5로 채워진 (2,3) matrix

eye : np.eye(5) 5 by 5 identity matrix

random : random values로 채워진 array 출력

empty : 0으로 채운 matrix (zeros와 무슨 차이지?)

 

 

2. Dimension, shape, data types

 

(2,3,3) 크기의 array가 있을 때

data.ndim : 3

data.shape : (2,3,3)

data.dtype : dtype('float64')

 

ndim은 몇 차원인지, shape은 각 차원의 원소 갯수, dtype은 array에 들어간 데이터의 타입

 

 

3. Operations between arrays and scalars

 

vectorization : array는 array의 원소에 대한 operation을 loop없이 수행할 수 있다.

 

 

4. Universal Functions(ufunc) : Fast Element-wise Array Functions

 

element마다 계산을 수행할 수 있도록 numpy에 주어진 function들이 있다.

 

Unary ufuns : 2개의 array를 input으로 받는 elementwise function

 

Unary functions
binary functions

 

5. Basic Indexing and Slicing

 

array를 슬라이싱할 때, 그것은 array의 복제본이 아니라 array를 보는 view에 가깝다. 따라서 어떤 array를 슬라이싱해서 다른 변수에 집어넣고, 그 변수를 새로운 값으로 바꾸면 원본 array도 바뀐다.

arr = np.array([1,2,3,4,5])
arr_slice = arr[1:2] # array([2,3])
arr_slice[0] = 1 # arr_slice=array([1,3])

arr # array([1,1,3,4,5])

# copy하고 싶을 때
arr_slice = arr[2:3].copy()

 

6. Boolean indexing

 

true, false indexing을 이용해 원하는 값만 골라낼 수 있다.

 

 

7. Data Processing Using Arrays

 

1) Expressing Conditional Logic as Array Operations

 

np.where함수

vectorized version of the nernary expression z if condition else y

 

np.where(condition, array)

condition에서 np.array([False True False True True])와 같은 결과이기 때문에

 

np.cumsum : cumulative sum, sum을 계속 쌓아가면서 더해주는 것

np.sum

np.mean

 

2) Methods for Boolean Arrays

 

arr = randn(100)
(arr>0).sum() # 0보다 큰 원소의 갯수 세기
np.where(arr>0, arr, 0).sum() # 0보다 큰 원소를 전부 더하기

 

 

3) Sorting

 

np.sort(array, 0) : axis 0 기준으로 작은 것부터 정렬

np.sort(array, 1) : axis 1 기준으로 작은 것부터 정렬

array.sort(0) 으로 표현할 수도 있다.

 

np.unique를 이용해 개별적인 값이 무엇이 있는지 알 수 있다.

np.in1d(array, [2,3,6]) 두 번째 입력([2,3,6]) 중에서 array에 있으면 True, 없으면 False return

 

저작자표시 비영리 변경금지 (새창열림)

'프로그래밍 Programming > 파이썬 Python' 카테고리의 다른 글

[Python] 내가 헷갈려서 기록하는 matplotlib의 subplot 그리기  (0) 2021.04.22
[Python] Numpy 라이브러리(2)  (0) 2021.03.27
[Python] 파이썬 Functions 만들기  (0) 2021.03.26
[Python] 파이썬 control flow  (0) 2021.03.26
[Python] 파이썬 datatype  (0) 2021.03.26
'프로그래밍 Programming/파이썬 Python' 카테고리의 다른 글
  • [Python] 내가 헷갈려서 기록하는 matplotlib의 subplot 그리기
  • [Python] Numpy 라이브러리(2)
  • [Python] 파이썬 Functions 만들기
  • [Python] 파이썬 control flow
보통의공대생
보통의공대생
수학,프로그래밍,기계항공우주 등 공부하는 기록들을 남깁니다.
  • 보통의공대생
    뛰는 놈 위에 나는 공대생
    보통의공대생
  • 전체
    오늘
    어제
    • 분류 전체보기 (460)
      • 공지 (1)
      • 영어 공부 English Study (40)
        • 텝스 TEPS (7)
        • 글 Article (21)
        • 영상 Video (10)
      • 연구 Research (99)
        • 최적화 Optimization (3)
        • 데이터과학 Data Science (7)
        • 인공지능 Artificial Intelligent (40)
        • 제어 Control (45)
      • 프로그래밍 Programming (103)
        • 매트랩 MATLAB (25)
        • 파이썬 Python (33)
        • 줄리아 Julia (2)
        • C++ (3)
        • 리눅스 우분투 Ubuntu (6)
      • 항공우주 Aeronautical engineeri.. (21)
        • 항법 Navigation (0)
        • 유도 Guidance (0)
      • 기계공학 Mechanical engineering (13)
        • 열역학 Thermodynamics (0)
        • 고체역학 Statics & Solid mechan.. (10)
        • 동역학 Dynamics (1)
        • 유체역학 Fluid Dynamics (0)
      • 수학 Mathematics (34)
        • 선형대수학 Linear Algebra (18)
        • 미분방정식 Differential Equation (3)
        • 확률및통계 Probability & Sta.. (2)
        • 미적분학 Calculus (1)
        • 복소해석학 Complex Analysis (5)
        • 실해석학 Real Analysis (0)
      • 수치해석 Numerical Analysis (21)
      • 확률 및 랜덤프로세스 Random process (2)
      • 추론 & 추정 이론 Estimation (3)
      • 기타 (26)
        • 설계 프로젝트 System Design (8)
        • 논문작성 Writing (55)
        • 세미나 Seminar (2)
        • 생산성 Productivity (3)
      • 유학 생활 Daily (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    ChatGPT
    생산성
    matplotlib
    딥러닝
    서버
    텝스
    obsidian
    에러기록
    논문작성법
    Julia
    Zotero
    논문작성
    JAX
    LaTeX
    MATLAB
    Numerical Analysis
    WOX
    옵시디언
    고체역학
    IEEE
    텝스공부
    수치해석
    Linear algebra
    teps
    Statics
    우분투
    Python
    인공지능
    Dear abby
    pytorch
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
보통의공대생
[Python] Numpy 라이브러리 (1)
상단으로

티스토리툴바