λͺ©μ°¨
Numpyλ
- CμΈμ΄λ₯Ό κΈ°λ°μΌλ‘ λ΄λΆ λ°λ³΅λ¬Έμ μ¬μ©νμ¬ μλκ° λ§€μ° λΉ λ₯΄λ€.
- λ€μ°¨μ λ°°μ΄(ndarray)μ νΈλ¦¬νκ² μ²λ¦¬ν μ μλλ‘ μ§μν΄μ£Όλ νμ΄μ¬ λΌμ΄λΈλ¬λ¦¬λ€.
Β
β» ndarray vs list
- ndarray : μ μ λ©λͺ¨λ¦¬λ‘ λ°μ΄ν°λ₯Ό λΉ λ₯΄κ² μ²λ¦¬νκ³ , λͺ¨λ μμλ κ°μ μλ£νμ κ°μ§λ€.
- list : μλκ° λ§€μ° λλ¦¬κ³ , μμκ° κ°κ° λ€λ₯Έ μλ£νμ κ°μ§ μ μλ€.
ndarray
- N-dimensional Array
- λ€μ°¨μ λ°°μ΄μ μ§μνλ€.
- μλ‘ λ€λ₯Έ νμ μ λ°μ΄ν°λ₯Ό λ΄μ μ μλ€.
- λ΄λΆ λ°λ³΅λ¬Έμ μ¬μ©ν΄μ μλκ° λΉ λ₯΄λ€.
- λ°°μ΄ κ°μ μ°μ μ°μ°μ΄ κ°λ₯νλ€.
Β
λ°μ΄ν° νμ μ’ λ₯
- int(8bit, 16bit, 32bit, 64bit) i1, i2, i4, i8
- λΆνΈκ° μλ€.
- λΉνΈμ λ§νΌ ν¬κΈ°λ₯Ό κ°μ§λ μ μνμ΄λ€.
- μ μ₯ν μ μλ κ°μ λ²μ : -2βΏβ»ΒΉ ~ 2βΏβ»ΒΉ-1
Β
2. uint(8bit, 16bit, 32bit, 64bit) u1, u2, u4, u8
- λΆνΈκ° μλ€.
- λΉνΈμ λ§νΌ ν¬κΈ°λ₯Ό κ°μ§λ μ μνμ΄λ€.
- μ μ₯ν μ μλ κ°μ λ²μ : 0 ~ 2βΏ-1
Β
3. float(16bit, 32bit, 64bit, 128bit) f2, f4, f8, f16
- λΆνΈκ° μλ€.
- λΉνΈμ λ§νΌ ν¬κΈ°λ₯Ό κ°μ§λ μ€μνμ΄λ€.
Β
4. 볡μμν
- complex64 : λκ°μ 32λΉνΈ λΆλ μμμ μΌλ‘ νμλλ 볡μμ c8
- complex128 : λκ°μ 64λΉνΈ λΆλμμμ μΌλ‘ νμλλ 볡μμ c16
Β
5. unicode
- κ³ μ κΈΈμ΄ λ¬Έμμ΄ unicode
Β
6. bool
- True, False
Β
7. λ°μ΄ν° νμ
νμΈ λ° λ³κ²½
- dtype : μλ£ν νμΈ
- astype : μλ£ν λ³κ²½
import numpy as np
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] a = np.array(data) a
Out[-] array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
a.dtype
Out[-] dtype('int32')
a = a.astype(np.float32) a
Out[-] array([[1., 2., 3.], [4., 5., 6.], [7., 8., 9.]], dtype=float32)
a[0][1]
Out[-] 2.0
a[0]
Out[-] array([1., 2., 3.], dtype=float32)
Β
- np.arange(start, stop, step) : stepμ λ°λΌ μ¦κ°νλ μμ΄μ μμ±νλ€.
- reshape : λ§λ€μ΄μ§ λ°°μ΄μ λ°μ΄ν°λ₯Ό κ·Έλλ‘ κ°μ§κ³ ννλ₯Ό λ°κΏμ€λ€.
np.arange(1, 10, 2) # (start, stop, step)
Out[-] array([1, 3, 5, 7, 9])
np.arange(1, 10).reshape(3, 3)
Out[-] array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
np.arange(1, 13).reshape(3, 2, 2)
Out[-] array([[[ 1, 2], [ 3, 4]], [[ 5, 6], [ 7, 8]], [[ 9, 10], [11, 12]]])
Β
- nan
- μλ£νμ΄ Floatνμ΄λ―λ‘ Integerμμλ μ€λ₯κ° λ°μνλ€.
- λ°°μ΄μμ μ°μ°ν κ²½μ° μ€λ₯κ° λ°μνμ§ μμ§λ§ κ²°κ³Όκ°μ΄ NaNμ΄ λλ€.
np.nan * 10
Out[-] nan
a[0][1] = np.nan a
Out[-] array([[ 1., nan, 3.], [ 4., 5., 6.], [ 7., 8., 9.]], dtype=float32)
a = np.arange(1, 10).reshape(3, 3) a
Out[-] array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
a[0][1] = np.nan # integerμμλ nanμ μ¬μ© ν μ μλ€.
Out[-] --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-15-10bef5bd968c> in <module> ----> 1 a[0][1] = np.nan ValueError: cannot convert float NaN to integer
a = np.linspace(1, 10, 20) # (start, stop, num) a
Out[-] array([ 1. , 1.47368421, 1.94736842, 2.42105263, 2.89473684, 3.36842105, 3.84210526, 4.31578947, 4.78947368, 5.26315789, 5.73684211, 6.21052632, 6.68421053, 7.15789474, 7.63157895, 8.10526316, 8.57894737, 9.05263158, 9.52631579, 10. ])
μ°μ°
- λ°λ³΅λ¬Έμ μ¬μ©νμ§ μμλ, λ°°μ΄μ λͺ¨λ μμλ λ°λ³΅μ°μ°μ΄ μ¬μ©λλ€.
- μ ν λμ μμ μ¬μ©νμ¬ μ°μ° κ°λ₯νλ€.
- np.dot, @ : νλ ¬ κ³± ꡬνλ μ°μ°
data = np.arange(1, 10).reshape(3, 3) data
Out[-] array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
data + data
Out[-] array([[ 2, 4, 6], [ 8, 10, 12], [14, 16, 18]])
[1, 2, 3] + [4, 5, 6] # 리μ€νΈλΌλ¦¬ λνλ©΄ μ°κ²°λλ€.
Out[-] [1, 2, 3, 4, 5, 6]
data - data
Out[-] array([[0, 0, 0], [0, 0, 0], [0, 0, 0]])
data * data
Out[-] array([[ 1, 4, 9], [16, 25, 36], [49, 64, 81]])
data / data
Out[-] array([[1., 1., 1.], [1., 1., 1.], [1., 1., 1.]])
np.dot(data, data)
Out[-] array([[ 30, 36, 42], [ 66, 81, 96], [102, 126, 150]])
data@data
Out[-] array([[ 30, 36, 42], [ 66, 81, 96], [102, 126, 150]])
Β
μ°¨μ
- 0μ°¨μ : Scalar (νλμ λ°μ΄ν° κ°μΌλ‘λ§ μ‘΄μ¬νλ κ²)
- 1μ°¨μ : Vector (μ«μλ€μ λ°°μ΄ (1D array))
- 2μ°¨μ : Matrix (μ«μλ€μ 2D array (rows: ν, columns: μ΄))
- 3μ°¨μ μ΄μ : Tensor (μ«μλ€μ λ€μ°¨μ λ°°μ΄)
# 0μ°¨μ a = np.array(1) print(a) print(a.shape) print(a.ndim)
Out[-] 1 () 0
# 1μ°¨μ a = np.array([1]) print(a) print(a.shape) print(a.ndim)
Out[-] [1] (1,) 1
# 1μ°¨μ a = np.array([1, 2, 3, 4, 5]) print(a) print(a.shape) print(a.ndim)
Out[-] [1 2 3 4 5] (5,) 1
# 2μ°¨μ a = np.array([[1, 2, 3], [4, 5, 6]]) print(a) print(a.shape) print(a.ndim)
Out[-] [[1 2 3] [4 5 6]] (2, 3) 2
# 2μ°¨μ a = np.array([[1]]) print(a) print(a.shape) print(a.ndim)
Out[-] [[1]] (1, 1) 2
# 3μ°¨μ a = np.array([[[1, 2], [3, 4], [5, 6]], [[7, 8], [9, 10], [11, 12]]]) print(a) print(a.shape) print(a.ndim)
Out[-] [[[ 1 2] [ 3 4] [ 5 6]] [[ 7 8] [ 9 10] [11 12]]] (2, 3, 2) 3
Β
matrix μ ν
- zeros : 0μΌλ‘ μ΄κΈ°νλ λ°°μ΄ μμ±
- ones : 1λ‘ μ΄κΈ°ν λ λ°°μ΄ μμ±
- eye : μ£Όλκ°μ μ μμκ° λͺ¨λ 1μ΄κ³ λλ¨Έμ§ μμλ 0μΈ μ μ¬κ°νλ ¬ (λ¨μνλ ¬)
- empty : μ΄κΈ°ν νμ§ μκ³ λ°°μ΄λ§ μμ±, κΈ°μ‘΄μ λ©λͺ¨λ¦¬μ μ μ₯λμ΄ μλ κ°μΌλ‘ λνλ¨
- full : μ§μ ν μ«μλ‘ μ΄κΈ°ν
- linespace(start, end(ν¬ν¨), number, endpoint = ) : μ ν ꡬκ°μ μ§μ ν κ°μλ§νΌ λΆν νλ€.
- endpoint = True or False : λ§μ§λ§ κ°μ ν¬ν¨μν¬μ§ μν€μ§ μμμ§ μ ν
a = np.arange(12).reshape(2,3,2) a
Out[-] array([[[ 0, 1], [ 2, 3], [ 4, 5]], [[ 6, 7], [ 8, 9], [10, 11]]])
b = np.ones(12) b
Out[-] array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
b = np.ones(12).reshape(2, 3, 2) b
Out[-] array([[[1., 1.], [1., 1.], [1., 1.]], [[1., 1.], [1., 1.], [1., 1.]]])
c = np.zeros(12).reshape(2, 3, 2) c
Out[-] array([[[0., 0.], [0., 0.], [0., 0.]], [[0., 0.], [0., 0.], [0., 0.]]])
d = np.eye(3) d
Out[-] array([[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]])
e = np.zeros([3, 4]) e
Out[-] array([[0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.]])
e = np.zeros([3, 4, 2]) e
Out[-] array([[[0., 0.], [0., 0.], [0., 0.], [0., 0.]], [[0., 0.], [0., 0.], [0., 0.], [0., 0.]], [[0., 0.], [0., 0.], [0., 0.], [0., 0.]]])
f = np.empty([2, 3]) f
Out[-] array([[2.12199579e-314, 6.36598737e-314, 1.06099790e-313], [1.48539705e-313, 1.90979621e-313, 2.33419537e-313]])
g = np.full((3, 4), 1000) g
Out[-] array([[1000, 1000, 1000, 1000], [1000, 1000, 1000, 1000], [1000, 1000, 1000, 1000]])
h = np.linspace(2, 10, 6) h
Out[-] array([ 2. , 3.6, 5.2, 6.8, 8.4, 10. ])
Β
μ§κ³ν¨μ
- mean : νκ· μ ꡬνλ ν¨μ
- median : λ°μ΄ν°λ₯Ό ν¬κΈ°λ‘ μ λ ¬νκ³ κ·Έ μ€ κ°μ΄λ° μ μΆλ ₯νλ ν¨μ
β» λ§μ½ λ°μ΄ν° κ°μκ° μ§μμΌ κ²½μ° κ°μ₯ κ°μ΄λ°μ λ μμ νκ· μ ꡬνλ€.
- var : λΆμ° ꡬνλ ν¨μ
- std : νμ€νΈμ°¨ ꡬνλ ν¨μ
- sum : ν©κ³ ꡬνλ ν¨μ
- max : κ°μ₯ ν° μλ₯Ό ꡬνλ ν¨μ
- min : κ°μ₯ μμ μλ₯Ό ꡬνλ ν¨μ
a = np.arange(10).reshape(2,5) a
Out[-] array([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]])
a[0][0] = 100 a
Out[-] array([[100, 1, 2, 3, 4], [ 5, 6, 7, 8, 9]])
a[0, 1] = 1000 a
Out[-] array([[ 100, 1000, 2, 3, 4], [ 5, 6, 7, 8, 9]])
np.mean(a)
Out[-] 114.4
np.median(a)
Out[-] 6.5
np.std(a)
Out[-] 296.5485457728633
np.var(a)
Out[-] 87941.04
np.sum(a)
Out[-] 1144
sum(a)
Out[-] array([ 105, 1006, 9, 11, 13])
a
Out[-] array([[ 100, 1000, 2, 3, 4], [ 5, 6, 7, 8, 9]])
np.sum(a, axis=0)
Out[-] array([ 105, 1006, 9, 11, 13])
np.sum(a, axis=1)
Out[-] array([1109, 35])
np.max(a)
Out[-] 1000
np.min(a)
Out[-] 2