Python | numpy.array でベクトル、行列の掛け算

>>> import numpy as np


1次元配列 x

>>> x = np.array([1, 2, 3])
>>> x
array([1, 2, 3])

>>> x.T  # 縦ベクトル横ベクトルの区別はない
array([1, 2, 3])


スカラー (a x_i)
ベクトルの和  (x_i + y_i)
各要素にスカラーを加える  (x_i + s)

>>> 2 * x + [10, 20, 30] + 100
array([112, 124, 136])


x.dot(y) →  (\sum_i x_i y_i) x\cdot y ベクトルの内積

>>> x.dot([1, 2, 3])
14


行列 A

>>> A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
>>> A
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])


A + x → (A_{ij} + x_j) 配列の足し算

>>> A + x
array([[ 2,  4,  6],
       [ 5,  7,  9],
       [ 8, 10, 12]])


A * x → (A_{ij} x_j) ただし、j の和は取らない、配列の掛け算
x * A → (x_j A_{ij}) = (A_{ij} x_j) 順番が逆でも同じ結果になる

>>> A * x
array([[ 1,  4,  9],
       [ 4, 10, 18],
       [ 7, 16, 27]])

>>> x * A
array([[ 1,  4,  9],
       [ 4, 10, 18],
       [ 7, 16, 27]])


A.dot(x) → (\sum_{j}A_{ij} x_j)Axx は縦ベクトルとして扱われる

>>> A.dot(x)
array([14, 32, 50])


x.dot(A) → (\sum_{i}x_iA_{ij}) = (\sum_{i}A_{ij}x_i)xAx は横ベクトルとして扱われる

>>> x.dot(A)
array([30, 36, 42])

Python | numpy.matrix でベクトル、行列の演算

>>> import numpy as np

# ベクトル
>>> x = np.matrix([1, 0, 0])

>>> x  # 横ベクトル
matrix([[1, 0, 0]])

>>> x.T  # 縦ベクトル
matrix([[1],
        [0],
        [0]])

>>> 2 * x + [0, 3, 4] + 10  # スカラー倍とベクトルの和、各要素にスカラーを加える
matrix([[12, 13, 14]])

>>> x.T * x  # 縦 * 横 -> 行列 (3*3)
matrix([[1, 0, 0],
        [0, 0, 0],
        [0, 0, 0]])

>>>  x * x.T  # 横 * 縦 -> スカラー (1*1)
x * x.T

# 行列
>>> A = np.matrix([[1, 2, 3],
>>>                [4, 5, 6],
>>>                [7, 8, 9]])

>>> A
matrix([[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]])

>>> 2 * A + 100 - [[ 2,  4,  6],  # スカラー倍と行列の和、各要素にスカラーを加える
>>>                [ 8, 10, 12],
>>>                [14, 16, 18]]
matrix([[100, 100, 100],
        [100, 100, 100],
        [100, 100, 100]])

# 行列とベクトル
>>> A * x.T  # 行列 * 縦ベクトル
matrix([[1],
        [4],
        [7]])

>>> x * A  # 横ベクトル * 行列
matrix([[1, 2, 3]])

>>> A + x  # 各行に横ベクトルを加える
matrix([[2, 2, 3],
        [5, 5, 6],
        [8, 8, 9]])

 >>> A + x.T # 各列に縦ベクトルを加える
matrix([[2, 3, 4],
        [4, 5, 6],
        [7, 8, 9]])

Ubuntu | Magic Keyboard2 (US) right command を 日本語入力ON, left command を日本語入力OFF に設定する、かつcontrolキーとしても機能するようにする方法

目標と成果

  • 右command 空打ちで日本語入力ON →成功
  • 左command 空打ちで日本語入力OFF →成功
  • command キーはctrlキーとしても機能する →失敗
  • 左ctrlキーを superキーに割り当てる →未実施

しかし下記の設定してもあまりうまくいっていない
というか成功した2項目だけなら xmodmap いらない


CompizConfig settings manager をインストール

$ sudo apt install conpizconfig-settings-manager

コンピュータを検索から compizconfig settings manager を起動
デスクトップカテゴリから Ubuntu Unity Plugin を選択
Launcher タブの Key to show the Dash, Launcher and Help Overlay を無効に設定

右上のキーボードマークまたは[あ]のマークから設定を開く
全体の設定タブの拡張オプションの表示にチェック
入力メソッドをオンに、に Rsuper を登録
入力メソッドをオフに、に Lsuper を登録


~/.Xmodmap で super key をすべて control key(モディファイア)として挙動するよう変えてしまう

clear Mod4
add control = Super_L Super_R

詳細は下記リンクから
キーバインドの変更 Xmodmapの基本的な設定方法 - Qiita


書き換えたら次を実行

$ xmodmap ~/.Xmodmap


右上のキーボードマークまたは[あ]のマークから設定を開く
全体の設定タブの拡張オプションの表示にチェック
入力メソッドをオンに、に Rsuper, Ctrl+Rsuper を登録
入力メソッドをオフに、に Lsuper, Ctrl+Lsuper を登録

補足
command キーは英語入力では super キーとして振る舞うのだが
Mozcに切り替えたあとは、command キーが何故か Ctrl+Rsuper といったキーに変わってしまう
というわけで入力メソッドをオンしたりオフしたりしながら登録しなければならない。
同様にcommandキーがControlキーとして挙動したりしなかったりして使えない。

Future Work
pcl.solima.net