numpy覚え書き
行列の定義
>>> A = np.array([[1,2,3],[4,5,6],[7,8,9]]) >>> A array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
行列の転置
>>> A.T array([[1, 4, 7], [2, 5, 8], [3, 6, 9]])
行列式
>>> np.linalg.det(A) 6.6613381477509402e-16
↑の読み方: 6.66.. × 1016
逆行列
>>> np.linalg.inv(A) array([[ -4.50359963e+15, 9.00719925e+15, -4.50359963e+15], [ 9.00719925e+15, -1.80143985e+16, 9.00719925e+15], [ -4.50359963e+15, 9.00719925e+15, -4.50359963e+15]])
固有値・固有ベクトル
内積
np.dot(v1,v2)
外積
np.cross(v1,v2)
Pythonでリストの中身が勝手に変わってしまう時は
Python2.7
Pythonのあるリスト(Aとする)に別のリスト(Bとする)をアペンドすると、アペンドしたリスト(B)の変更がアペンド先のリスト(A)の中身に影響を与えることがある←よくわかってないです
例
>>> listA = ['A'] >>> listB = ['B'] >>> listA.append(listB) >>> listA ['A',['B']] >>> listB.append('C') >>> listB ['B','C'] >>> listA ['A',['B','C']] ← これ
これを回避するためには、copyモジュールのdeepcopy関数を使うと良いらしい。
>>> import copy >>> listA = ['A'] >>> listB = ['B'] >>> listA.append(copy.deepcopy(listB)) ← ここで使います >>> listA ['A',['B']] >>> listB.append('C') >>> listB ['B','C'] >>> listA ['A',['B']] ← listBの変更の影響を受けなくなった
git,GitHubの便利なコマンド覚え書き
- ワークツリー上での削除をGitHubに反映させる
$ git commit -a
の後$ git push
- 直前のcommitのコメントを編集する
$ git commit --amend
- 今までの一連の変更内容を確認する
$ git log -p
- commitする前の変更を取り消す
$ git checkout HEAD .
pythonのunittestの使い方
pythonのunittestモジュールを用いることで、関数のテストを行う
対象となるコード(target.py)
def myadd(a,b): return a+b def mypow(a,b): return a**b
これをテストするコード(test.py)
#coding:utf-8 import unittest from target import myadd from target import mypow class TestTarget(unittest.TestCase): def test_myadd(self): # 関数myaddのテスト input_1 = 2 input_2 = 3 expected = 5 # 期待される結果 result = myadd(input_1,input_2) self.assertEqual(result,expected) # 結果が等しいかどうか確かめる def test_mypow(self): # 関数mypowのテスト input_1 = 2 input_2 = 3 expected = 8 # 期待される結果 result = mypow(input_1,input_2) self.assertEqual(result,expected) # 結果が等しいかどうか確かめる if __name__=="__main__": unittest.main()
assertEqual():結果が等しいかどうか確かめる
assertTrue():結果が真かどうか確かめる
assertFalse():結果が偽かどうか確かめる
ROSでワークスペースとパッケージを作る
ワークスペースの作り方
ROSのワークスペース(catkin_ws)を作成する
$ mkdir -p ~/catkin_ws/src $ cd ~catkin_ws/src $ catkin_init_workspace $ catkin_make $ source ~/catkin_ws/devel/setup.bash (この行は~/.bashrcの最後に追記しておくとよい)
これでワークスペースが作成できる
パッケージの作り方
ワークスペース中に新しいパッケージを作成する
$ cd ~/catkin_ws/src $ catkin_create_pkg <パッケージ名> rospy roscpp std_msgs $ cd ~/catkin_ws $ catkin_make $ source ~/catkin_ws/devel/setup.bash
これで自作パッケージを使うことができるようになる