반응형
snowman95
코딩수련장
snowman95
전체 방문자
오늘
어제
  • 분류 전체보기 (230)
    • 앱테크 (3)
    • 옵시디언 (5)
    • 드라마, 영화 (1)
    • 개발자 이야기 (24)
    • 프로젝트 (10)
      • 프로젝트 방법론 (7)
      • 프로젝트 기록 (2)
      • Github (1)
    • 개발 지식 (0)
      • 디자인 패턴 (0)
    • 프론트엔드 개발 (5)
      • 테크트리 (2)
      • React.js (19)
      • ReactNative (2)
      • Next.js (6)
      • GraphQL (6)
      • 패키지 매니저 (2)
      • 라이브러리 (3)
      • 상태관리 라이브러리 (4)
      • Web 지식 (3)
      • HTML CSS (26)
      • Javascript (16)
      • 도구 (Tool) (3)
      • 성능 최적화 (1)
      • 디자인시스템 (0)
    • Python (53)
      • 모음집 (1)
      • 문법 (12)
      • 라이브러리 (15)
      • 알고리즘 (10)
      • 백준 문제풀이 (9)
      • 코딩테스트 (2)
      • 도구 (Tool) (3)
    • C++ (20)
      • 알고리즘 (6)
      • 삼성SW기출 (6)
      • 삼성 A형 (6)
    • 데이터사이언스 (1)
    • 인프라 (9)
      • 하드웨어 지식 (4)
      • Ansible (2)
      • Database (2)
      • 쉘스크립트 (1)
    • 주식 (0)
    • 취업 준비 (4)
      • 취업 이야기 (0)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • 오블완
  • 알고리즘
  • 개발자이직회고
  • 삼성SW역량테스트
  • C++
  • A형
  • 언어
  • 전공 요약 #데이터베이스
  • 전공 요약 #네트워크
  • 백준
  • 삼성SDS
  • 기계식키보드 #nuphy
  • 25년도채용시장
  • Next.js #graphql #tailwind.css
  • 면접
  • 전공요약
  • 개발자취업시장
  • 개발자이직
  • 나의 해방일지
  • 티스토리챌린지

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
snowman95

코딩수련장

파이썬(python) 라이브러리 - numpy
Python/라이브러리

파이썬(python) 라이브러리 - numpy

2021. 3. 17. 00:18
728x90
반응형

numpy


NumPy 퀵스타터

 

NumPy quickstart — NumPy v1.20 Manual

NumPy provides familiar mathematical functions such as sin, cos, and exp. In NumPy, these are called “universal functions”(ufunc). Within NumPy, these functions operate elementwise on an array, producing an array as output. See also all, any, apply_alo

numpy.org

         

- 설치방법 : pip install numpy

- 용도 : python에서 벡터,행렬 등 수치 연산 수행하는 선형대수 라이브러리

 

참고로 백준 온라인 저지에서는 사용 못합니다. 외부 라이브러리이기 때문입니다.

 

배열 생성

import numpy as np
a = np.array([2,3,4])
[2 3 4]
(출력) a → array([2, 3, 4])
(출력) a.dtype → dtype('int64')

b = np.array([1.2, 3.5, 5.1])
(출력) b.dtype → dtype('float64')


b = np.array([(1.5,2,3), (4,5,6)])
(출력) b
array([[1.5, 2. , 3. ],
       [4. , 5. , 6. ]])

c = np.array( [ [1,2], [3,4] ], dtype=complex )
(출력) c
array([[1.+0.j, 2.+0.j],
       [3.+0.j, 4.+0.j]])

 

arrange() : 범위 안의 숫자를 모두 포함한 배열 생성 (기본dtype : int32)

reshape(x,y) : [x][y]형태로 배열 재조립

array.flatten() : 1차원 배열로 변환

np.arange(start=0, end, step=1) : end값 포함x

import numpy as np
a = np.arange(10)
[0 1 2 3 4 5 6 7 8 9]

b = np.arange(0, 1, 0.1)
[0.  0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]
c = a.reshape(2,5)
[[0 1 2 3 4]
 [5 6 7 8 9]]
 
d = a.reshape(10)
[0 1 2 3 4 5 6 7 8 9]

e = a.reshape(10,)
[0 1 2 3 4 5 6 7 8 9]

f = a.reshape(-1,2)  : -1 뒤에 오는 값은 row값 지정
[[0 1]
 [2 3]
 [4 5]
 [6 7]
 [8 9]]
a = np.arange(10).reshape(2,5)
[[0 1 2 3 4]
 [5 6 7 8 9]]
 
b = a.flatten()
[0 1 2 3 4 5 6 7 8 9]

zeros() : 0으로 채워진 배열 생성 (기본dtype : float64)

np.zeros(shape, dtype, order)

np.zeros(3)
[0. 0. 0.]

np.zeros((3, 4))
[[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]

ones() : 1로 채워진 배열 생성 (기본dtype : float64)

np.ones(shape, dtype, order)

np.ones((2,3,4), dtype=np.int16)
[[[1 1 1 1]
  [1 1 1 1]
  [1 1 1 1]]

 [[1 1 1 1]
  [1 1 1 1]
  [1 1 1 1]]]

empty() : 초기화 되지 않는 쓰레기값으로 채워진 배열 생성

np.empty(3)
[6.95310922e-310 6.95310922e-310 3.49699467e-317]

something_like() : 만들어진 배열을 특정 값으로 채워넣을때 사용

- np.zeros_like(matrix) : 0으로 채워버린다

- np.ones_like(matrix) : 1로 채워버린다

- np.empty_like(matrix) : 쓰레기 값으로 채워버린다 

 

 

배열이 너무 크면 ... 으로 표현됨

아래와 같이 해주면 전부 출력됨

np.set_printoptions(threshold=sys.maxsize)

 

평균

numpy.mean(x)

 

중앙값 : 정렬했을때 정중앙에 있는 값

np.median(x) : 출력값은 float 형

리스트에 음수가 있으면 안됨 !!!!!!!!!!!!!!!

x = np.array([1,2,3])
np.median(x) 
2.0

최빈값 : 가장 많이 등장하는 값

- 자료의 값이 모두 같거나 모두 다르면 최빈값은 없음.

- 자료의 값이 모두 다를 때, 도수가 가장 큰 값이 1개 이상 있으면 그 값은 모두 최빈값

1. numpy 의 bincount와 argmax 함수 사용

리스트에 음수가 있으면 안됨 !!!!!!!!!!!!!!!

import numpy as np
aa = np.array([1,2,3,1,2,3,3,4]) : 0부터~가장큰수 까지 몇번 등장했는지 단순 나열
bb = np.bincount(aa)
[0 2 2 3 1]

cc = bb.argmax()
3

혹은

bb = np.bincount([1,2,3,1,2,3,3,4,9,10,10])
[0 2 2 3 1 0 0 0 0 1 2]

cc = bb.argmax()
3

2. collections.Counter 사용

리스트에 음수가 있으면 안됨 !!!!!!!!!!!!!!!

import collections
a = [1,2,3,1,2,3,3,4]

b = collections.Counter(a) : 등장 횟수 많은것 부터 dict{값:등장횟수} 로 돌려줌
Counter({3: 3, 1: 2, 2: 2, 4: 1})

c = b.most_common()        : 리스트[튜플()]로 변환하여 반환
[(3, 3), (1, 2), (2, 2), (4, 1)]

 

그럼 음수값이 포함된 리스트에서 최빈값을 어떻게 구할까?

백준 2108 : 통계학

음수를 양수로 바꿔서 풀면 됩니다.
ex) 입력되는 정수의 절댓값은 4,000을 넘지 않는다.
→ 모든 값에 4000을 더하면 적어도 0보다는 커진다.

import numpy np (백준에서는 지원안됨)
입력 = [-1,-1,-2,-2] → 각 요소에 4000씩 더해서 아래와 같이 양수로 만듬
array = [3999, 3999, 3998, 3998]
print(collections.Counter(array).most_common()[0][0]-4000)
→ -1
print(np.bincount(array).argmax()-4000)
→ -2

왜 이런 결과가 나올까?
bincount()는 0부터 가장큰 값 까지 등장횟수 순서대로 나열
argmax() 함수는 array에서 가장 큰 값 들고오는데 여러개 있으면 가장 처음 만나는 것 들고옴 
그래서 3999이 아니라 3998 값을 가져옴.
3998-4000 = -2

 

반응형
저작자표시 동일조건 (새창열림)

'Python > 라이브러리' 카테고리의 다른 글

파이썬 (python) 라이브러리 - Pandas 판다스  (0) 2021.03.22
파이썬 (python) 라이브러리 - finpie  (1) 2021.03.19
파이썬 (python) 라이브러리 - yahoo_fin  (0) 2021.03.18
파이썬 (python) 라이브러리 - openpyxl, xlrd (excel 다루기)  (0) 2021.03.09
파이썬 (python) 라이브러리 - re (정규표현식)  (1) 2021.03.09
    'Python/라이브러리' 카테고리의 다른 글
    • 파이썬 (python) 라이브러리 - finpie
    • 파이썬 (python) 라이브러리 - yahoo_fin
    • 파이썬 (python) 라이브러리 - openpyxl, xlrd (excel 다루기)
    • 파이썬 (python) 라이브러리 - re (정규표현식)
    snowman95
    snowman95
    (17~19) Unity/Unreal Engine 게임 프로그래머 (20~21) System Administrator ___________ (22~) React 웹 프론트앤드 개발자 __________ 깃헙 : https://github.com/snowman95

    티스토리툴바