NumPy Cheat Sheet
NumPy Cheat Sheet
π¦₯ λ³Έλ¬Έ
π―μ€μ΅μμ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
π― array() λ‘ [1,2,3] βndarray([1,2,3])
β
π― zeros() λ‘ shape=(2,3) β[[0,0,0],[0,0,0]]
β
π―π―π―π―π―π―π―π―π―π―π―π― ones() λ‘ shape=(2,3) β[[1,1,1],[1,1,1]]
β β
β π― empty() λ‘ shape=(2,3) βμ΄κΈ°νλμ§ μμ κ°
π―π―π―π―π―π―π―π―π―π―π―π―π―π― β
β β π― arange() λ‘ start,stop,step β[0,1,2,3,4]
β β β
β β π― linspace() λ‘ start,stop,num βκ· λ± λΆν
β β
β β π― shape λ‘ λ°°μ΄ ν¬κΈ° β(2,3)
β β β
β π―π―π―π―π―π―π―π―π―π―π―π― ndim λ‘ μ°¨μ κ°μ β2
β β
β π― dtype λ‘ λ°μ΄ν°νμ
βint64
β β
β π― size λ‘ μ 체 κ°μ β6
β
β π― μΈλ±μ± λ‘ [0,1] βνΉμ [0,1]μμΉ
β β
β π― μ¬λΌμ΄μ± λ‘ a[0:2, 1:3] βλΆλΆλ°°μ΄
π―π―π―π―π―π―π―π―π―π―π―π―π―π―
β π― μ΄ μ 체 λ‘ a[:, 1] β2μ΄ μ 체
β β
β π― ν¬μ λ‘ a[[0,2], [1,3]] βνΉμ μΈλ±μ€
β β
β π― λΆλ¦¬μΈ λ‘ a[a > 5] β쑰건 λ§μ‘± κ°
β
β π― +, -, *, / λ‘ μμλ³ μ°μ° βa+b, a*2
β β
β π―π―π―π―π―π―π―π―π―π―π―π― ** λ‘ κ±°λμ κ³± βa**2
β βμ°μ° β
β β π― @ λ‘ νλ ¬κ³±μ
βa@b
β β β
β β π― >, <, == λ‘ λΉκ΅ μ°μ° βa>0
β β β
β β π― &, |, ~ λ‘ λ
Όλ¦¬ μ°μ° β(a>0) & (a<5)
π―π―π―π―π―π―π―π―π―π―π―π―
β β π― sum() λ‘ μ 체 ν©κ³ βnp.sum(a, axis=0)
β β β
β β π― min(), max() λ‘ μ΅μ/μ΅λ βnp.min(a)
β π―π―π―π―π―π―π―π―π―π―π―π―
β ν΅κ³ π― mean() λ‘ νκ· βnp.mean(a)
β β
β π― argmin() λ‘ μ΅μκ°μμΉ βnp.argmin(a)
β β
β π― cumsum() λ‘ λμ ν© βnp.cumsum(a)
β
β π― reshape() λ‘ λͺ¨μ λ³κ²½ βa.reshape(3,4)
β β
β π― T λ‘ μ μΉνλ ¬ βa.T
β β
β π―π―π―π―π―π―π―π―π―π―π―π― ravel() λ‘ 1μ°¨μλ³ν βa.ravel()
β β λ³ν β
π―π―π―π―π―π―π―π―π―π―π―π― π― resize() λ‘ ν¬κΈ° λ³κ²½ βa.resize((4,5))
β β
β β π― vstack() λ‘ μμ§ κ²°ν© βnp.vstack((a,b))
β π―π―π―π―π―π―π―π―π―π―π―π―
β κ²°ν©/λΆν π― hstack() λ‘ μν κ²°ν© βnp.hstack((a,b))
β β
β π― hsplit() λ‘ μν λΆν βnp.hsplit(a,3)
β β
β π― vsplit() λ‘ μμ§ λΆν βnp.vsplit(a,2)
β
β π― sqrt() λ‘ μ κ³±κ·Ό βnp.sqrt(a)
β β
β π― exp(), log() λ‘ μ§μλ‘κ·Έ βnp.exp(a)
π―π―π―π―π―π―π―π―π―π―π―π―
π― sin(), cos() λ‘ μΌκ°ν¨μ βnp.sin(a)
β
π― floor(), ceil() λ‘ λ΄λ¦Ό/μ¬λ¦Ό βnp.floor(a)
β
π― round() λ‘ λ°μ¬λ¦Ό βnp.round(a,2)
π κΈ°λ³Έ κ°λ
Broadcasting
λ€λ₯Έ ν¬κΈ° λ°°μ΄κ° μ°μ° κ°λ₯
1
2
3
a = np.array([1, 2, 3]) # (3,)
b = np.array([[1], [2], [3]]) # (3,1)
c = a + b # (3,3)
View vs Copy
1
2
3
a = np.array([1, 2, 3, 4])
b = a[1:3] # λ·°- a λ³κ²½μ bλ λ³κ²½
c = a[1:3].copy() # 볡μ¬- λ
립μ
axis μ΄ν΄νκΈ°
```plain text axis=0: ν λ°©ν₯ μ°μ° (μλλ‘ λ΄λ €κ°λ©°) axis=1: μ΄ λ°©ν₯ μ°μ° (μ€λ₯Έμͺ½μΌλ‘ μ΄λνλ©°)
1
2
3
4
5
### dtype μ’
λ₯
```plain text
int32, int64, float32, float64, bool, complex
π λ°°μ΄ μμ±
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# κΈ°λ³Έ λ°°μ΄ μμ±
a = np.array([1, 2, 3]) # [1 2 3]
b = np.array([[1, 2], [3, 4]]) # [[1 2]
# [3 4]]
# νΉμ λ°°μ΄
np.zeros((2, 3)) # [[0. 0. 0.]
# [0. 0. 0.]]
np.ones((2, 2)) # [[1. 1.]
# [1. 1.]]
np.empty((2, 2)) # μ΄κΈ°νλμ§ μμ κ°
np.eye(3) # 3x3 λ¨μνλ ¬
np.identity(3) # 3x3 λ¨μνλ ¬
# λ²μ λ°°μ΄
np.arange(5) # [0 1 2 3 4]
np.arange(1, 6, 2) # [1 3 5]
np.linspace(0, 1, 5) # [0. 0.25 0.5 0.75 1. ]
π λ°°μ΄ μμ±
1
2
3
4
5
6
7
8
a = np.array([[1, 2, 3], [4, 5, 6]])
a.shape # (2, 3)
a.ndim # 2
a.dtype # int64
a.size # 6
a.itemsize # 8 bytes
π μΈλ±μ± & μ¬λΌμ΄μ±
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
a = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
# κΈ°λ³Έ μΈλ±μ±
a[0, 0] # 1
a[2, 3] # 12
# μ¬λΌμ΄μ±
a[0:2, 1:3] # [[2 3]
# [6 7]]
a[:, 1] # [2 6 10]
a[1, :] # [5 6 7 8]
# ν¬μ μΈλ±μ±
a[[0, 2], [1, 3]] # [2 12]
a[[0, 2]] # [[1 2 3 4]
# [9 10 11 12]]
# λΆλ¦¬μΈ μΈλ±μ±
mask = a > 5
a[mask] # [6 7 8 9 10 11 12]
a[a > 5] # [6 7 8 9 10 11 12]
a[(a > 5) & (a < 10)] # [6 7 8 9]
π’ μ°μ°
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
a = np.array([10, 20, 30, 40])
b = np.array([1, 2, 3, 4])
# κΈ°λ³Έ μ°μ°
a + b # [11 22 33 44]
a - b # [9 18 27 36]
a * b # [10 40 90 160]
a / b # [10. 10. 10. 10.]
a ** 2 # [100 400 900 1600]
a % 3 # [1 2 0 1]
a // 3 # [3 6 10 13]
# νλ ¬ κ³±μ
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
A @ B # [[19 22]
# [43 50]]
np.dot(A, B) # λμΌν κ²°κ³Ό
# λΉκ΅ μ°μ°
a > 25 # [False False True True]
a == 30 # [False False True False]
np.array_equal(a, b) # False
# λ
Όλ¦¬ μ°μ°
(a > 20) & (a < 40) # [False False True False]
(a <= 20) | (a >= 40) # [True True False True]
~(a > 30) # [True True True False]
π ν΅κ³ ν¨μ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
a = np.array([[1, 2, 3], [4, 5, 6]])
# κΈ°λ³Έ ν΅κ³
np.sum(a) # 21
np.sum(a, axis=0) # [5 7 9]
np.sum(a, axis=1) # [6 15]
np.min(a) # 1
np.max(a) # 6
np.mean(a) # 3.5
np.median(a) # 3.5
np.std(a) # 1.707...
# μΈλ±μ€ κ΄λ ¨
np.argmin(a) # 0
np.argmax(a) # 5
np.argmin(a, axis=0) # [0 0 0]
np.argmax(a, axis=1) # [2 2]
# λμ ν¨μ
np.cumsum(a) # [1 3 6 10 15 21]
np.cumprod(a) # [1 2 6 24 120 720]
π λͺ¨μ λ³ν
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
a = np.arange(12)
# λͺ¨μ λ³ν
a.reshape(3, 4) # 3x4 λ°°μ΄
a.reshape(3, -1) # μλ κ³μ°
a.reshape(-1, 2) # μλ κ³μ°
a.ravel() # 1μ°¨μ λ³ν [0 1 2 ... 11]
# μ μΉ (Transpose)
b = a.reshape(3, 4)
b.T # 4x3 μ μΉ νλ ¬
# ν¬κΈ° λ³κ²½
# (aμ ν¬κΈ°κ° λ°λμ΄λ λ³κ²½λ¨)
a.resize(3, 4)
π κ²°ν© & λΆν
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
# κ²°ν©
np.vstack((a, b)) # [[1 2]
# [3 4]
# [5 6]
# [7 8]]
np.hstack((a, b)) # [[1 2 5 6]
# [3 4 7 8]]
np.concatenate((a, b), axis=0) # vstackκ³Ό λμΌ
np.concatenate((a, b), axis=1) # hstackκ³Ό λμΌ
# λΆν
a = np.arange(16).reshape(4, 4)
np.hsplit(a, 2) # [array([[0, 1], [4, 5], [8, 9], [12, 13]]),
# array([[2, 3], [6, 7], [10, 11], [14, 15]])]
np.vsplit(a, 2) # [array([[0, 1, 2, 3], [4, 5, 6, 7]]),
# array([[8, 9, 10, 11], [12, 13, 14, 15]])]
np.split(a, 2, axis=0) # vsplitκ³Ό λμΌ
np.split(a, 2, axis=1) # hsplitκ³Ό λμΌ
π’ μν ν¨μ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
a = np.array([0, np.pi / 2, np.pi])
# κΈ°λ³Έ ν¨μ
np.sqrt(a) # [0. 1.25331414 1.77245385]
np.exp(a) # [1. 4.81047738 23.14069263]
np.log(np.array([1, 10, 100])) # [0. 2.30258509 4.60517019]
np.log10(np.array([1, 10, 100])) # [0. 1. 2.]
# μΌκ° ν¨μ
np.sin(a) # [0. 1. 0.]
np.cos(a) # [1. 0. -1.]
np.tan(a) # [0. 16331239353195370. 0.]
np.degrees(a) # [0. 90. 180.]
np.radians(np.array([0, 90, 180])) # [0. 1.57079633 3.14159265]
# λ°μ¬λ¦Ό ν¨μ
np.floor(np.array([1.2, 1.5, 1.8, 2.1])) # [1. 1. 1. 2.]
np.ceil(np.array([1.2, 1.5, 1.8, 2.1])) # [2. 2. 2. 3.]
np.round(np.array([1.2, 1.5, 1.8, 2.1])) # [1. 2. 2. 2.]
np.round(np.array([1.23, 1.56]), 1) # [1.2 1.6]
π View vs Copy
1
2
3
4
5
6
7
8
9
10
11
12
a = np.array([1, 2, 3, 4])
# View (μλ³Έκ³Ό 곡μ )
b = a[1:3] # [2 3]
b[0] = 99 # bκ° [99 3]
print(a) # [1 99 3 4] (aλ λ³κ²½λ¨)
# Copy (λ
립μ )
c = a[1:3].copy() # [99 3]
c[0] = 88 # cκ° [88 3]
print(a) # [1 99 3 4] (aλ λ³κ²½μλ¨)
π Broadcasting
1
2
3
4
5
6
7
8
9
10
11
12
# κ°μ ν¬κΈ° λ°°μ΄
a = np.array([1, 2, 3])
b = a * 2 # [2 4 6]
# λ€λ₯Έ ν¬κΈ° λ°°μ΄κ° μ°μ°
a = np.array([1, 2, 3]) # (3,) ν¬κΈ°
b = np.array([[1], [2], [3]]) # (3,1) ν¬κΈ°
c = a + b # (3,3) ν¬κΈ°λ‘ κ²°κ³Ό:
# [[2 3 4]
# [3 4 5]
# [4 5 6]]
π² μ μ©ν ν¨μ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# λ°°μ΄ μ 보
np.info(np.ndarray) # ndarray μ 보 μΆλ ₯
# λλ€ μμ±
np.random.rand(2, 3) # 2x3 κ· λ±λΆν¬ λλ€ (0~1)
np.random.randn(2, 3) # 2x3 μ κ·λΆν¬ λλ€
np.random.randint(1, 10, (2, 3)) # 1~9 λ²μμ 2x3 μ μ λλ€
# μ λ ¬
a = np.array([3, 1, 2])
np.sort(a) # [1 2 3]
a.sort() # a μ체λ₯Ό μ λ ¬
# μ€λ³΅ μ κ±°
np.unique(np.array([1, 2, 2, 3, 3, 3])) # [1 2 3]
# μ°¨μ μΆκ°/μ κ±°
a = np.array([1, 2, 3])
a[:, np.newaxis] # μ΄λ²‘ν°λ‘ λ³ν [[1], [2], [3]]
a = np.array([[1], [2], [3]])
a.squeeze() # 1μ°¨μμΌλ‘ λ³ν [1 2 3]
This post is licensed under CC BY 4.0 by the author.