空飛ぶロボットのつくりかた

ロボットをつくるために必要な技術をまとめます。ロボットの未来についても考えたりします。

Numpy / pandasのお勉強

numpy

配列も@で行列のように計算できる。python3.5以降。

In [7]: import numpy as np

In [8]: A = np.array([[1,2],[3,4]])

In [9]: B = np.array([[5,6],[7,8]])

In [10]: C = A @ B @ A.T

In [11]: C
Out[11]: 
array([[ 63, 145],
       [143, 329]])

以下は同じ意味

In [12]: A = np.array([[1,2],[3,4]])

In [13]: B = np.array(((1,2),(3,4)))

いろいろな配列の作り方があるよ

In [24]: np.zeros((2,2))
Out[24]: 
array([[ 0.,  0.],
       [ 0.,  0.]])

In [25]: np.arange(1,100,20)
Out[25]: array([ 1, 21, 41, 61, 81])

メソッド

In [26]: A.shape
Out[26]: (2, 2)

行列計算

In [28]: A
Out[28]: 
array([[1, 2],
       [3, 4]])

In [29]: np.linalg.inv(A)
Out[29]: 
array([[-2. ,  1. ],
       [ 1.5, -0.5]])

In [30]: np.linalg.det(A)
Out[30]: -2.0000000000000004

In [31]: np.linalg.matrix_rank(A)
Out[31]: 2

配列の操作

In [34]: matrixA = np.arange(9).reshape(3,3)

In [35]: matrixA
Out[35]: 
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

In [36]: a = matrixA[1][1:];a
Out[36]: array([4, 5])

In [37]: a[1] = 10

In [38]: matrixA
Out[38]: 
array([[ 0,  1,  2],
       [ 3,  4, 10],
       [ 6,  7,  8]])

In [39]: matrixA[0,1]
Out[39]: 1

In [40]: matrixB = matrixA[1:,1:];matrixB
Out[40]: 
array([[ 4, 10],
       [ 7,  8]])

In [41]: matrixB[:,:]=100

In [42]: matrixA
Out[42]: 
array([[  0,   1,   2],
       [  3, 100, 100],
       [  6, 100, 100]])

In [44]: matrixC = np.random.rand(2,2);matrixC
Out[44]: 
array([[ 0.47235181,  0.13044348],
       [ 0.86500587,  0.17257454]])

In [45]: maskC = matrixC > 0.2; maskC
Out[45]: 
array([[ True, False],
       [ True, False]], dtype=bool)

In [46]: matrixD = matrixC[maskC]

In [47]: matrixD
Out[47]: array([ 0.47235181,  0.86500587])

↓すごくわかりやすい!!! 参考:

www.slideshare.net