{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"intro_numpy.ipynb","provenance":[],"collapsed_sections":[],"authorship_tag":"ABX9TyNTHZ9pP+5YP7Bq8EpBzanc"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"}},"cells":[{"cell_type":"markdown","metadata":{"id":"zOyOW4RvNkN6"},"source":["# numpy入門"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"aGXTMMs8NgxS","executionInfo":{"status":"ok","timestamp":1619089414680,"user_tz":-540,"elapsed":999,"user":{"displayName":"TOMA Naruaki","photoUrl":"","userId":"11747312442870110137"}},"outputId":"0fbf60c9-8b40-462e-cf3b-f294c3abee69"},"source":["import numpy as np\n","\n","# 行列の作成\n","a = np.array([[1,2,3], [4,5,6]])\n","print(a)\n","print(type(a))\n","print(a.shape)"],"execution_count":1,"outputs":[{"output_type":"stream","text":["[[1 2 3]\n"," [4 5 6]]\n","<class 'numpy.ndarray'>\n","(2, 3)\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"b4AnjxZVPkW9","executionInfo":{"status":"ok","timestamp":1619089415058,"user_tz":-540,"elapsed":1368,"user":{"displayName":"TOMA Naruaki","photoUrl":"","userId":"11747312442870110137"}},"outputId":"4cce2851-803b-4aa7-c593-c98bfd496f0c"},"source":["#行の参照\n","a[0]"],"execution_count":2,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([1, 2, 3])"]},"metadata":{"tags":[]},"execution_count":2}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"f5WTu5vsPoaM","executionInfo":{"status":"ok","timestamp":1619089415058,"user_tz":-540,"elapsed":1359,"user":{"displayName":"TOMA Naruaki","photoUrl":"","userId":"11747312442870110137"}},"outputId":"a5e85606-5b17-4814-d8aa-48c026fdc2b7"},"source":["#列の参照\n","a[:,0]"],"execution_count":3,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([1, 4])"]},"metadata":{"tags":[]},"execution_count":3}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"ioebfqDtPron","executionInfo":{"status":"ok","timestamp":1619089415059,"user_tz":-540,"elapsed":1352,"user":{"displayName":"TOMA Naruaki","photoUrl":"","userId":"11747312442870110137"}},"outputId":"8a77a42a-c7ef-4716-aac1-0f28463a5be0"},"source":["#スライス指定も可能\n","a[0:2]"],"execution_count":4,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([[1, 2, 3],\n","       [4, 5, 6]])"]},"metadata":{"tags":[]},"execution_count":4}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"OejQdfapPuTs","executionInfo":{"status":"ok","timestamp":1619089415059,"user_tz":-540,"elapsed":1343,"user":{"displayName":"TOMA Naruaki","photoUrl":"","userId":"11747312442870110137"}},"outputId":"540b5a7d-93cd-4b6a-bc9b-8417a85eaf16"},"source":["a[:,0:2]"],"execution_count":5,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([[1, 2],\n","       [4, 5]])"]},"metadata":{"tags":[]},"execution_count":5}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"lo7xrxAXN2vU","executionInfo":{"status":"ok","timestamp":1619089415060,"user_tz":-540,"elapsed":1336,"user":{"displayName":"TOMA Naruaki","photoUrl":"","userId":"11747312442870110137"}},"outputId":"78914203-7bbf-4349-9129-114a957f055b"},"source":["# 「行列 + 1」は全要素に対する和を実行\n","a + 1"],"execution_count":6,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([[2, 3, 4],\n","       [5, 6, 7]])"]},"metadata":{"tags":[]},"execution_count":6}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"-j8BnkHYN-Md","executionInfo":{"status":"ok","timestamp":1619089415060,"user_tz":-540,"elapsed":1328,"user":{"displayName":"TOMA Naruaki","photoUrl":"","userId":"11747312442870110137"}},"outputId":"3fd3e1de-704d-4658-aedb-3e86db7c22b4"},"source":["# *演算子も同様。\n","a * 2"],"execution_count":7,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([[ 2,  4,  6],\n","       [ 8, 10, 12]])"]},"metadata":{"tags":[]},"execution_count":7}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"FgY-VZMMOD8a","executionInfo":{"status":"ok","timestamp":1619089415060,"user_tz":-540,"elapsed":1320,"user":{"displayName":"TOMA Naruaki","photoUrl":"","userId":"11747312442870110137"}},"outputId":"a3f20f03-e915-4dc1-df62-73d436b53174"},"source":["#行列演算ではない！\n","a * a"],"execution_count":8,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([[ 1,  4,  9],\n","       [16, 25, 36]])"]},"metadata":{"tags":[]},"execution_count":8}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"CcPzjIcMOB8I","executionInfo":{"status":"ok","timestamp":1619089415061,"user_tz":-540,"elapsed":1312,"user":{"displayName":"TOMA Naruaki","photoUrl":"","userId":"11747312442870110137"}},"outputId":"264062a8-fb22-4519-f810-d40827e07e23"},"source":["#転置行列\n","a.T"],"execution_count":9,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([[1, 4],\n","       [2, 5],\n","       [3, 6]])"]},"metadata":{"tags":[]},"execution_count":9}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"JtsJhxWdOIeY","executionInfo":{"status":"ok","timestamp":1619089415061,"user_tz":-540,"elapsed":1304,"user":{"displayName":"TOMA Naruaki","photoUrl":"","userId":"11747312442870110137"}},"outputId":"3f8e587d-eafb-40c3-b337-85c0e08b52f7"},"source":["#内積を求めるにはdot関数を使う\n","np.dot(a, a.T)"],"execution_count":10,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([[14, 32],\n","       [32, 77]])"]},"metadata":{"tags":[]},"execution_count":10}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"PJOJFvUBOKui","executionInfo":{"status":"ok","timestamp":1619089415499,"user_tz":-540,"elapsed":1734,"user":{"displayName":"TOMA Naruaki","photoUrl":"","userId":"11747312442870110137"}},"outputId":"bac15dc4-4b7c-4654-8019-f4571b7b90cd"},"source":["#逆行列\n","np.linalg.inv(np.dot(a, a.T))"],"execution_count":11,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([[ 1.42592593, -0.59259259],\n","       [-0.59259259,  0.25925926]])"]},"metadata":{"tags":[]},"execution_count":11}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"by0xPzqUOVMz","executionInfo":{"status":"ok","timestamp":1619089415500,"user_tz":-540,"elapsed":1728,"user":{"displayName":"TOMA Naruaki","photoUrl":"","userId":"11747312442870110137"}},"outputId":"f122aa26-59af-4d6c-df33-3b60c08b3bbb"},"source":["#ゼロ行列、1行列、対角行列\n","print(np.zeros((2,3)))\n","\n","print(np.ones((2,3)))\n","\n","print(np.eye(3))"],"execution_count":12,"outputs":[{"output_type":"stream","text":["[[0. 0. 0.]\n"," [0. 0. 0.]]\n","[[1. 1. 1.]\n"," [1. 1. 1.]]\n","[[1. 0. 0.]\n"," [0. 1. 0.]\n"," [0. 0. 1.]]\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"vSzfhXAdOc6C","executionInfo":{"status":"ok","timestamp":1619089415500,"user_tz":-540,"elapsed":1720,"user":{"displayName":"TOMA Naruaki","photoUrl":"","userId":"11747312442870110137"}},"outputId":"a3183ac8-e538-4c42-a998-f723ab95fe03"},"source":["#特定範囲内で幅を指定してサンプル点を用意。\n","#例えば、\n","# 「y=x**2」のグラフを描画したいとき、\n","#　定義域「-10〜10の範囲で0.1刻みでサンプル点を用意」みたいなときに便利。\n","np.arange(0, 1, 0.3)"],"execution_count":13,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([0. , 0.3, 0.6, 0.9])"]},"metadata":{"tags":[]},"execution_count":13}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"cZEqbhjQPAZ0","executionInfo":{"status":"ok","timestamp":1619089415501,"user_tz":-540,"elapsed":1714,"user":{"displayName":"TOMA Naruaki","photoUrl":"","userId":"11747312442870110137"}},"outputId":"2fd29b14-fc27-44c8-edbe-b305372ee0b5"},"source":["#np.arangeで始点、刻み幅を省略すると0から指定個数の整数を用意。\n","np.arange(8)"],"execution_count":14,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([0, 1, 2, 3, 4, 5, 6, 7])"]},"metadata":{"tags":[]},"execution_count":14}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"_UFbdjmUPO8k","executionInfo":{"status":"ok","timestamp":1619089415501,"user_tz":-540,"elapsed":1706,"user":{"displayName":"TOMA Naruaki","photoUrl":"","userId":"11747312442870110137"}},"outputId":"ed378182-dee3-43d2-e455-4fb6a106fff0"},"source":["#行列の形を変形できる。\n","np.reshape(np.arange(6),(2,3))"],"execution_count":15,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([[0, 1, 2],\n","       [3, 4, 5]])"]},"metadata":{"tags":[]},"execution_count":15}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Yi3pLN6SPXTF","executionInfo":{"status":"ok","timestamp":1619089415501,"user_tz":-540,"elapsed":1699,"user":{"displayName":"TOMA Naruaki","photoUrl":"","userId":"11747312442870110137"}},"outputId":"4b6f59c6-a789-4583-d607-4c1b64966635"},"source":["#刻み幅はどうでも良いからサンプル数を指定したい場合に便利。\n","np.linspace(0,2,3)"],"execution_count":16,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([0., 1., 2.])"]},"metadata":{"tags":[]},"execution_count":16}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"3toSvv6VPeRv","executionInfo":{"status":"ok","timestamp":1619089415502,"user_tz":-540,"elapsed":1692,"user":{"displayName":"TOMA Naruaki","photoUrl":"","userId":"11747312442870110137"}},"outputId":"8a4c9baf-52e7-4c03-a058-bb23b04231ba"},"source":["np.linspace(0,2,4)"],"execution_count":17,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([0.        , 0.66666667, 1.33333333, 2.        ])"]},"metadata":{"tags":[]},"execution_count":17}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"K1-31QgpPy7W","executionInfo":{"status":"ok","timestamp":1619089415503,"user_tz":-540,"elapsed":1686,"user":{"displayName":"TOMA Naruaki","photoUrl":"","userId":"11747312442870110137"}},"outputId":"d9e97443-0bb9-48bc-a51a-74987b32e857"},"source":["#行列を結合できる。\n","#縦方向に結合\n","a = np.array([[1,2,3], [4,5,6]])\n","b = np.array([[7,8,9], [10,11,12]])\n","np.r_[a, b]"],"execution_count":18,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([[ 1,  2,  3],\n","       [ 4,  5,  6],\n","       [ 7,  8,  9],\n","       [10, 11, 12]])"]},"metadata":{"tags":[]},"execution_count":18}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Yi-_Je6SP4Jx","executionInfo":{"status":"ok","timestamp":1619089415503,"user_tz":-540,"elapsed":1678,"user":{"displayName":"TOMA Naruaki","photoUrl":"","userId":"11747312442870110137"}},"outputId":"7f736beb-cf64-4dcd-e830-17fe2fe734ff"},"source":["#横方向に結合\n","np.c_[a, b]"],"execution_count":19,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([[ 1,  2,  3,  7,  8,  9],\n","       [ 4,  5,  6, 10, 11, 12]])"]},"metadata":{"tags":[]},"execution_count":19}]}]}