From 47a6e4a03600ea82fcb29fd90e66fae29978cb47 Mon Sep 17 00:00:00 2001 From: Young Woo Kim <skysaver00@ajou.ac.kr> Date: Sun, 20 Dec 2020 22:01:22 +0900 Subject: [PATCH] Update README.md --- README.md | 552 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 552 insertions(+) diff --git a/README.md b/README.md index f0cf9fe..613b214 100644 --- a/README.md +++ b/README.md @@ -78,4 +78,556 @@ Window의 시작 버튼을 누르고, 명령 프롬프트(CMD)를 관리자 권 # Numpy 배워보기 +```python +import numpy as np +import pandas as pd +print (np.__version__) +print (pd.__version__) +``` + + 1.19.3 + 1.1.5 + + + +```python +#np array 만들기 +#여기서부터는 array = 배열로 취급 +``` + + +```python +one = [1,2,3,4,5] +print (one) +ten = [10,20,30,40,50] +print (ten) + +type (one) +``` + + [1, 2, 3, 4, 5] + [10, 20, 30, 40, 50] + + + + + + list + + + + +```python +onearr = np.array(one) +tenarr = np.array(ten) +print (onearr) +print (tenarr) + +type (onearr) +``` + + [1 2 3 4 5] + [10 20 30 40 50] + + + + + + numpy.ndarray + + + + +```python +onearr.dtype +``` + + + + + dtype('int32') + + + + +```python +onearr.shape +``` + + + + + (5,) + + + + +```python +arr2nd = np.array([[1,0,0],[0,1,0],[0,0,1],[1,1,1]]) +arr2nd.shape +``` + + + + + (4, 3) + + + + +```python +one.dtype +``` + + + --------------------------------------------------------------------------- + + AttributeError Traceback (most recent call last) + + <ipython-input-7-81347d222ef3> in <module> + ----> 1 one.dtype + + + AttributeError: 'list' object has no attribute 'dtype' + + + +```python +sumarr = onearr + tenarr +sumlist = one + ten +print (sumarr) +print (sumlist) +``` + + [11 22 33 44 55] + [1, 2, 3, 4, 5, 10, 20, 30, 40, 50] + + + +```python +#기본 배열 만드는 함수 -> 빠르게 배열 만들기 +``` + + +```python +arr1 = np.zeros(3) +arr2 = np.zeros((5, 3)) + +print (arr1) +print (arr2) +``` + + [0. 0. 0.] + [[0. 0. 0.] + [0. 0. 0.] + [0. 0. 0.] + [0. 0. 0.] + [0. 0. 0.]] + + + +```python +arr1 = np.ones(3) +arr2 = np.ones((5, 3)) + +print (arr1) +print (arr2) +``` + + [1. 1. 1.] + [[1. 1. 1.] + [1. 1. 1.] + [1. 1. 1.] + [1. 1. 1.] + [1. 1. 1.]] + + + +```python +arr1 = np.identity(1) +arr2 = np.identity(2) + +print (arr1) +print (arr2) +``` + + [[1.]] + [[1. 0.] + [0. 1.]] + + + +```python +arr1 = np.arange(100) +arr2 = np.arange(96,100) + +print (arr1) +print (arr2) +``` + + [ 0 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 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 + 96 97 98 99] + [96 97 98 99] + + + +```python +#기본적인 배열의 연산 +``` + + +```python +print (onearr) +print (tenarr) +``` + + [1 2 3 4 5] + [10 20 30 40 50] + + + +```python +plus = onearr + tenarr +minus = onearr - tenarr +mul = onearr * tenarr +div = onearr / tenarr + +print (plus) +print (minus) +print (mul) +print (div) +``` + + [11 22 33 44 55] + [ -9 -18 -27 -36 -45] + [ 10 40 90 160 250] + [0.1 0.1 0.1 0.1 0.1] + + + +```python +arr1 = np.array([[10, 20, 30], [100, 200, 300]]) +arr2 = np.array(([5, 6, 7], [5, 6, 7])) + +print (arr1 + arr2) +print (arr1 - arr2) +``` + + [[ 15 26 37] + [105 206 307]] + [[ 5 14 23] + [ 95 194 293]] + + + +```python +arr1 = np.array([[10, 20], [30, 40]]) +arr2 = np.identity(2) + +print (arr1 * arr2) +``` + + [[10. 0.] + [ 0. 40.]] + + + +```python +#numpy에서의 브로드캐스트 +#numpy는 브로드 캐스트를 지원합니다. 몰론 두 array가 행이나 열의 길이가 같아야 합니다. +``` + + +```python +arr1 = np.array([[10, 20],[30, 40],[50,60]]) + +print (arr1) +print (arr1.shape) +``` + + [[10 20] + [30 40] + [50 60]] + (3, 2) + + + +```python +arr2 = np.array([100,200]) +arr3 = np.array([[100], [200], [300]]) + +print (arr2.shape) +print (arr3.shape) +``` + + (2,) + (3, 1) + + + +```python +horizontal = arr1 + arr2 +print (horizontal) + +vertical = arr1 + arr3 +print (vertical) +``` + + [[110 220] + [130 240] + [150 260]] + [[110 120] + [230 240] + [350 360]] + + + +```python +difarr = np.array([100,200,300,400]) +sumarr2 = onearr + difarr +print (sumarr2) +``` + + + --------------------------------------------------------------------------- + + ValueError Traceback (most recent call last) + + <ipython-input-24-3603de6b54e0> in <module> + 1 difarr = np.array([100,200,300,400]) + ----> 2 sumarr2 = onearr + difarr + 3 print (sumarr2) + + + ValueError: operands could not be broadcast together with shapes (5,) (4,) + + + +```python +#배열의 값 찾기 +#파이썬, C언어에서 하는 배열 값 찾기와 비슷하다. + +#1차원에서는 기본적으로 1개의 값만 입력하면 되지만, 2차원은 2개의 값을 입력한다. +``` + + +```python +arr1 = np.arange(10) + +print (arr1) +print (arr1[6]) +print (arr1[0]) +print (arr1[3:7]) +print (arr1[:4]) +print (arr1[6:]) +print (arr1[:]) +``` + + [0 1 2 3 4 5 6 7 8 9] + 6 + 0 + [3 4 5 6] + [0 1 2 3] + [6 7 8 9] + [0 1 2 3 4 5 6 7 8 9] + + + +```python +arr2 = np.array([[1,2,3],[4,5,6],[7,8,9]]) + +print (arr2) +print (arr2[2,2]) +print (arr2[0,0]) +print (arr2[0,:]) +print (arr2[0:,1:]) +print (arr2[:3,:1]) +``` + + [[1 2 3] + [4 5 6] + [7 8 9]] + 9 + 1 + [1 2 3] + [[2 3] + [5 6] + [8 9]] + [[1] + [4] + [7]] + + + +```python +#numpy의 함수들 +#진짜 많다 여기 있는게 다가 아니다 +``` + + +```python +arr1 = np.random.random(10) +arr2 = np.random.randn(10) +arr3 = np.random.rand(10) +arr4 = np.random.randint(10) + +print (arr1) +print (arr2) +print (arr3) +print (arr4) +``` + + [0.9446711 0.83497248 0.83201387 0.13935773 0.17415421 0.49383566 + 0.62534832 0.95301777 0.775304 0.42802872] + [ 0.49760198 0.42642281 -0.17887658 0.97600137 -1.09890443 1.14944642 + -1.61367583 0.68313963 -0.69266217 -0.20675362] + [0.45892907 0.79511622 0.23510859 0.83475971 0.61042409 0.98928205 + 0.04701599 0.47026134 0.10542542 0.6393744 ] + 3 + + + +```python +np.random.rand(3, 10) +``` + + + + + array([[0.69049139, 0.33961382, 0.4720473 , 0.05657901, 0.44823818, + 0.62798771, 0.18857805, 0.58646854, 0.78296022, 0.23064811], + [0.89095585, 0.56933846, 0.66368549, 0.36591346, 0.78302718, + 0.04110933, 0.23313533, 0.3403511 , 0.68102568, 0.99330884], + [0.18974105, 0.01787721, 0.24513353, 0.61273492, 0.82943479, + 0.88117367, 0.39032357, 0.85654216, 0.57124692, 0.9269831 ]]) + + + + +```python +arr1 = arr1 * 10 + +print (arr1) +print (np.ceil(arr1)) +print (np.floor(arr1)) +``` + + [9.44671104 8.34972483 8.32013866 1.39357733 1.74154213 4.9383566 + 6.2534832 9.53017769 7.75304001 4.28028724] + [10. 9. 9. 2. 2. 5. 7. 10. 8. 5.] + [9. 8. 8. 1. 1. 4. 6. 9. 7. 4.] + + + +```python +arr1 = np.array([[1,2,3],[4,5,6],[7,8,9]]) + +print (np.sqrt(arr1)) +``` + + [[1. 1.41421356 1.73205081] + [2. 2.23606798 2.44948974] + [2.64575131 2.82842712 3. ]] + + + +```python +arr2 = np.array([[10, -100],[10, -1000]]) + +print (arr2) +print (np.abs(arr2)) +``` + + [[ 10 -100] + [ 10 -1000]] + [[ 10 100] + [ 10 1000]] + + + +```python +print (np.exp(arr1)) +print (np.log10(arr1)) +``` + + [[2.71828183e+00 7.38905610e+00 2.00855369e+01] + [5.45981500e+01 1.48413159e+02 4.03428793e+02] + [1.09663316e+03 2.98095799e+03 8.10308393e+03]] + [[0. 0.30103 0.47712125] + [0.60205999 0.69897 0.77815125] + [0.84509804 0.90308999 0.95424251]] + + + +```python +print (np.cos(arr1)) +``` + + [[ 0.54030231 -0.41614684 -0.9899925 ] + [-0.65364362 0.28366219 0.96017029] + [ 0.75390225 -0.14550003 -0.91113026]] + + + +```python +arr3 = np.array([[9,8,7],[6,5,4],[3,2,1]]) + +print (np.maximum(arr1, arr3)) +print (np.minimum(arr1, arr3)) +``` + + [[9 8 7] + [6 5 6] + [7 8 9]] + [[1 2 3] + [4 5 4] + [3 2 1]] + + + +```python +#행렬의 정렬 +``` + + +```python +arr1 = np.random.rand(30) + +arr1 = arr1 * 100 +arr1 = np.floor(arr1) + +print (arr1) + +arr1 = arr1.astype('int32') + +print (arr1) +print (arr1.dtype) +``` + + [31. 75. 13. 88. 97. 83. 97. 52. 42. 40. 27. 39. 95. 78. 86. 9. 72. 85. + 55. 75. 8. 17. 77. 78. 55. 1. 81. 89. 62. 68.] + [31 75 13 88 97 83 97 52 42 40 27 39 95 78 86 9 72 85 55 75 8 17 77 78 + 55 1 81 89 62 68] + int32 + + + +```python +print (np.sort(arr1)) +print (np.sort(arr1)[::-1]) +``` + + [ 1 8 9 13 17 27 31 39 40 42 52 55 55 62 68 72 75 75 77 78 78 81 83 85 + 86 88 89 95 97 97] + [97 97 95 89 88 86 85 83 81 78 78 77 75 75 72 68 62 55 55 52 42 40 39 31 + 27 17 13 9 8 1] + + + +```python + +``` -- GitLab