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
これで自作パッケージを使うことができるようになる