(Python 6๊ฐ•) numpy

210804

Numpy

  • Numerical Python

  • ํŒŒ์ด์ฌ์˜ ๊ณ ์„ฑ๋Šฅ ๊ณผํ•™ ๊ณ„์‚ฐ์šฉ ํŒจํ‚ค์ง€

  • Matrix์™€ Vector์™€ ๊ฐ™์€ Array์—ฐ์‚ฐ์˜ ํ‘œ์ค€

  • ํ•œ๊ธ€๋กœ ๋„˜ํŒŒ์ด๋กœ ์ฃผ๋กœ ํ†ต์นญ

ํŠน์ง•

  • ์ผ๋ฐ˜ List์— ๋น„ํ•ด ๋น ๋ฅด๊ณ  ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์ ์ด๋‹ค

  • ๋ฐ˜๋ณต๋ฌธ ์—†์ด ๋ฐ์ดํ„ฐ ๋ฐฐ์—ด์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ์ง€์›ํ•œ๋‹ค

  • ์„ ํ˜•๋Œ€์ˆ˜์™€ ๊ด€๋ จ๋œ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค

  • C, C++, ํฌํŠธ๋ž€ ๋“ฑ์˜ ์–ธ์–ด์™€ ํ†ตํ•ฉ ๊ฐ€๋Šฅ

ndarray

import numpy as np
  • numpy์˜ ํ˜ธ์ถœ ๋ฐฉ๋ฒ•

  • ์ผ๋ฐ˜์ ์œผ๋กœ np๋ผ๋Š” ๋ณ„์นญ ์ด์šฉ

test_array = np.array([1, 4, 5, 8], float)
print(test_array)
type(test_array[3])
  • numpy๋Š” np.array ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•ด์„œ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๋Š”๋ฐ ์ด ๋ฐฐ์—ด์„ ndarray ๋ผ๊ณ  ํ•œ๋‹ค

  • numpy๋Š” ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…๋งŒ ๋ฐฐ์—ด์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.

    • ๋ฆฌ์ŠคํŠธ์™€์˜ ์ฐจ์ด์ 

    • dynamic typing์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•œ๋‹ค

  • C์˜ Array๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•œ๋‹ค

array creation

  • ํŒŒ์ด์ฌ์€ ์ž„์˜์˜ ์œ„์น˜์— ์ €์žฅ๋˜๋Š”๋ฐ ๋น„ํ•ด C์–ธ์–ด๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅ๋œ๋‹ค.

    • c์–ธ์–ด์˜ ์ง€์—ญ์„ฑ

  • ๋˜, ํฌ๊ธฐ๊ฐ€ ๊ณ ์ •๋˜์–ด์žˆ๋‹ค.

  • ๊ทธ๋ž˜์„œ, ์†๋„๊ฐ€ ๋น ๋ฅธ๊ฒƒ

  • shape : ndarr์˜ dimension ๊ตฌ์„ฑ์„ ๋ฐ˜ํ™˜

    • array์˜ ํฌ๊ธฐ, ํ˜•ํƒœ์— ๋Œ€ํ•œ ์ •๋ณด

  • dtype : ndarrr์˜ type์„ ๋ฐ˜ํ™˜

  • ndim : number of dimensions

  • size : data ์˜ ๊ฐœ์ˆ˜

  • nbytes : ndarray object์˜ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ๋ฐ˜ํ™˜ํ•จ

    • int๋Š” 1byte, float์€ 4 bytes

    • ํŒŒ์ด์ฌ์—์„œ float์€ 8bytes๊ฐ€ ๊ธฐ๋ณธ์ด๋‹ค. ์œ„๋Š” ๋„˜ํŒŒ์ด ๊ธฐ์ค€

Handling shape

reshape : Array์˜ shape์˜ ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•จ. element์˜ ๊ฐฏ์ˆ˜๋Š” ๋™์ผ

  • -1 ์€ ์•Œ์•„์„œ ์ปดํ“จํ„ฐ๊ฐ€ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์„ ์˜๋ฏธํ•œ๋‹ค

flatten : ๋‹ค์ฐจ์› array๋ฅผ 1์ฐจ์› array๋กœ ๋ณ€ํ™˜

  • (2, 2, 4) => (16, )

indexing for numpy array

  • list์™€ ๋‹ฌ๋ฆฌ ์ด์ฐจ์› ๋ฐฐ์—ด์—์„œ [0, 0] ํ‘œ๊ธฐ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค

    • a[0, 0] == a[0][0]

    • ๋‘˜ ๋‹ค ๊ฐ€๋Šฅํ•˜๋‹ค

  • ๋˜, list์™€ ๋‹ฌ๋ฆฌ ํ–‰๊ณผ ์—ด ๋ถ€๋ถ„์„ ๋‚˜๋ˆ ์„œ slicing์ด ๊ฐ€๋Šฅํ•˜๋‹ค

Create Functions

arange

  • array์˜ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•˜์—ฌ ๊ฐ’์˜ list๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ช…๋ น์–ด

zeros

  • 0์œผ๋กœ ๊ฐ€๋“์ฐฌ ndarr ์ƒ์„ฑ

ones

  • 1๋กœ ๊ฐ€๋“์ฐฌ ndarr ์ƒ์„ฑ

empty

  • shape๋งŒ ์ฃผ์–ด์ง€๊ณ  ๋น„์–ด์žˆ๋Š” ndarr ์ƒ์„ฑ

    • memory initialization์ด ๋œ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค

    • ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๊ฐ’์€ ์ด์ „์— ์‚ฌ์šฉํ•˜๋˜ ์“ฐ๋ ˆ๊ธฐ๊ฐ’์ด๋‹ค

somthing_like

  • ๊ธฐ์กด ndarr์˜ shape ํฌ๊ธฐ๋งŒํผ 1 ๋˜๋Š” 0์˜ array ๋ฐ˜ํ™˜

identity

๋‹จ์œ„ํ–‰๋ ฌ ์ƒ์„ฑ

eye

๋Œ€๊ฐ์„ ์ด 1์ธ ํ–‰๋ ฌ ์ƒ์„ฑ.

  • identity์™€ ๋‹ค๋ฅธ์ ์€ ์‹œ์ž‘์œ„์น˜๋ฅผ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค

  • np.eye(3, 5, k=2) ๋ฉด 2๋งŒํผ ์ด๋™๋œ 3 * 5 ํ–‰๋ ฌ ์ƒ์„ฑ

diag

๋Œ€๊ฐ ํ–‰๋ ฌ์˜ ๊ฐ’์„ ์ถ”์ถœํ•จ

random sampling

๋ฐ์ดํ„ฐ ๋ถ„ํฌ์— ๋”ฐ๋ฅธ sampling์œผ๋กœ array๋ฅผ ์ƒ์„ฑ

Operation functions

sum

element๊ฐ„์˜ ํ•ฉ

axis

๋ชจ๋“  operation function์„ ์‹คํ–‰ํ•  ๋•Œ ๊ธฐ์ค€์ด ๋˜๋Š” dimension ์ถ•์ด๋‹ค.

mathematical functions

๋‹ค์–‘ํ•œ ์ˆ˜ํ•™ ์—ฐ์‚ฐ์ž

  • np.exp

  • np.sqrt

  • np.mean

  • np.std

Concatenate

vstack

  • numpy array๋ฅผ ์„ธ๋กœ๋กœ ๋ถ™์ž„

hstack

  • numpy array๋ฅผ ๊ฐ€๋กœ๋กœ ๋ถ™์ž„

concatenate

  • axis = 0 : vstack๊ณผ ๋™์ผ

  • axis = 1: hstack๊ณผ ๋™์ผ

newaxis

  • ์ถ•์„ ํ•˜๋‚˜ ๋Š˜๋ฆฐ๋‹ค

Opertaions b/t arrays

  • ๊ธฐ๋ณธ์ ์œผ๋กœ numpy array๊ฐ„์˜ ๊ธฐ๋ณธ์ ์ธ ์‚ฌ์น™ ์—ฐ์‚ฐ์„ ์ง€์›ํ•œ๋‹ค

    • ์ด ๋•Œ element-wise operation์œผ๋กœ ์—ฐ์‚ฐ๋œ๋‹ค

dot product

  • ๋‚ด์  ํ•จ์ˆ˜

  • np.array.dot(np.array) ๊ผด๋กœ ์‚ฌ์šฉ

transpose

  • ์ „์น˜ ํ•จ์ˆ˜

  • np.array.T ์˜ ๊ผด๋กœ ์‚ฌ์šฉ

broadcasting

  • shape์ด ๋‹ค๋ฅธ ๋ฐฐ์—ด ๊ฐ„ ์—ฐ์‚ฐ์„ ์ง€์›ํ•˜๋Š” ๊ธฐ๋Šฅ

  • scalar - vector ์™€ vector - matrix ๊ฐ„์— ์ง€์›ํ•œ๋‹ค

timeit

  • jupyter ํ™˜๊ฒฝ์—์„œ ์ฝ”๋“œ์˜ ํผํฌ๋จผ์Šค๋ฅผ ์ฒดํฌํ•˜๋Š” ํ•จ์ˆ˜

  • ์ผ๋ฐ˜์ ์œผ๋กœ ์†๋„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค

    • numpy > list comprehension > for loop

Comparisons

All & Any

Array์˜ ๋ฐ์ดํ„ฐ ์ „๋ถ€ ๋˜๋Š” ์ผ๋ถ€๊ฐ€ ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์—ฌ๋ถ€๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค

numpy๋Š” ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ ๋™์ผํ•œ element๊ฐ„ ๋น„๊ต์˜ ๊ฒฐ๊ณผ๋ฅผ Boolean type์œผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

where

argmax & argmin

array๋‚ด ์ตœ๋Œ€๊ฐ’ ๋˜๋Š” ์ตœ์†Œ๊ฐ’์˜ index๋ฅผ ๋ฐ˜ํ™˜

๋˜ํ•œ, axis ๊ธฐ๋ฐ˜์˜ ๋ฐ˜ํ™˜์„ ํ•  ์ˆ˜ ์žˆ๋‹ค

boolean index

ํŠน์ • ์กฐ๊ฑด์— ๋”ฐ๋ฅธ ๊ฐ’์„ ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ์ถ”์ถœํ•œ๋‹ค.

fancy index

numpy array๋ฅผ index value๋กœ ์‚ฌ์šฉํ•ด์„œ ๊ฐ’์„ ์ถ”์ถœํ•œ๋‹ค. ์ด ๋•Œ ์ธ๋ฑ์Šค๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ฐฐ์—ด์€ ๋ฐ˜๋“œ์‹œ ์ •์ˆ˜๋กœ ์„ ์–ธ๋˜์–ด์•ผ ํ•œ๋‹ค.

  • matrixํ˜•ํƒœ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค

    • a[b][c]

Last updated