Pythonでグラフを描画する場合に、matplotlibというライブラリがよく使われます。
折れ線グラフや散布図などを描くことができ、詳細に表示設定をすることもできます。
グラフの描画
[コード]
1 | # 方程式を設定するためにNumpyをインポート |
[実行結果]

Pythonでグラフを描画する場合に、matplotlibというライブラリがよく使われます。
折れ線グラフや散布図などを描くことができ、詳細に表示設定をすることもできます。
[コード]
1 | # 方程式を設定するためにNumpyをインポート |

Numpy行列で四則演算を行っていきます。
まずNumpyをインポートし、2行3列の行列を2つ作成します。
[コード]
1 | import numpy as np |
[実行結果]
行列 x [[1 2 3] [4 5 6]] 行列 y [[1. 2. 3. ] [0.1 0.5 0.8]]
[コード]
1 | print('# 和') |
[実行結果]
# 和 [[2. 4. 6. ] [4.1 5.5 6.8]] # 差 [[0. 0. 0. ] [3.9 4.5 5.2]] # 積 [[1. 4. 9. ] [0.4 2.5 4.8]] # 商 [[ 1. 1. 1. ] [40. 10. 7.5]]
先ほどは同じ形状同士で四則演算を行いましたが、配列のサイズが完全に一致しなくても片方の次元の長さが1または0の場合、同じ値によって自動的にサイズ拡張されてから計算されます。
[コード]
1 | z = np.array([[1, 2, 3]]) |
[実行結果]
[[1 2 3]] [[2 4 6] [5 7 9]]
1行3列のデータが2行3列に拡張されて計算されていることが分かります。
最後に行列ではない単純な数字を足してみます。
[コード]
1 | print(x + 100) |
[実行結果]
[[101 102 103] [104 105 106]]
全ての要素に対して100が足されていることが分かります。
ブロードキャスト機能を使うといちいち要素ごとに四則演算を行う必要がなくシンプルにコードを書くことができ大変便利です。
今回は、Numpy行列を連結してみます。
まずNumpyをインポートし、2行3列の行列を2つ作成します。
[コード]
1 | import numpy as np |
[実行結果]
行列 x [[1 2 3] [4 5 6]] 行列 y [[1. 1. 1.] [1. 1. 1.]]
[コード]
1 | z = np.r_[x, y] |
[実行結果]
[[1. 2. 3.] [4. 5. 6.] [1. 1. 1.] [1. 1. 1.]]
[コード]
1 | z = np.c_[x, y] |
[実行結果]
[[1. 2. 3. 1. 1. 1.] [4. 5. 6. 1. 1. 1.]]
Numpy行列の転置をとる方法と形状を変える方法を試してみます。
まずNumpyをインポートし、2行3列の行列を作成します。
1 | import numpy as np |
転置をとるにはシンプルに .T とするだけです。
[コード]
1 | print('転置前') |
[実行結果]
転置前 [[1 2 3] [4 5 6]] 転置後 [[1 4] [2 5] [3 6]]
[コード]
1 | # 3次元配列を定義 |
[実行結果]
転置前 [[[1 2] [3 4] [5 6]]] 転置後 [[[1] [3] [5]] [[2] [4] [6]]]
[コード]
1 | print('転置前') |
[実行結果]
転置前 (1, 3, 2) 転置後 (2, 3, 1)
配列の形状を変えるには reshapeメソッド を使います。
[コード]
1 | # 2行3列の配列を定義 |
[実行結果]
[[1 2 3 4 5 6]]
配列を変換する場合、要素数が一致しないとエラーになりますので気を付けてください。
Numpy行列の要素へのアクセスを試してみます。
まずNumpyをインポートし、2行3列の行列を作成します。
1 | import numpy as np |
2行3列目の要素を取得するには次のように指定します。
1 | print(x[1, 2]) |
添え字は0から始まるため2行目は 1、3列目は 2 と指定します。
[実行結果]
6
1 | print(x[0]) |
[実行結果]
[1 2 3]
2次元配列のまま1列目だけを取得します。
1 | print(x[:, 0:1]) |
[実行結果]
[[1] [4]]
1次元配列で1列目を取得します。
1 | print(x[:, 0]) |
[実行結果]
[1 4]
リスト型データからNumpyの行列を作成します。
まず、以下のようにNumpyをインポートしておきます。
1 | import numpy as np |
Numpyでは (3, ) という配列の形で表現されます。
1 | x = np.array([1, 2, 3]) |
[実行結果]
[1 2 3]
元となるデータは、リスト型データの中にリスト型データがあるイメージです。
Numpyでは (2, 3) という配列の形で表現されます。
1 | x = np.array([[1, 2, 3], [4, 5, 6]]) |
[実行結果]
[[1 2 3] [4 5 6]]
配列の形は shape という属性で取得することができます。
1 | print(x.shape) |
[実行結果]
(2, 3)
1 | print(x.dtype) |
[実行結果]
int32
Numpyを使うとPythonで行列が簡単に扱えるようになります。
まず、以下のようにNumpyをインポートしておきます。
1 | import numpy as np |
ゼロ埋めの配列を作成する場合には下記のように書きます。
1 | # 2行3列のゼロ埋めの配列を作成 |
[実行結果]
[[ 0. 0. 0.] [ 0. 0. 0.]]
1 | # 2行3列のゼロ埋めの配列を作成(int型) |
[実行結果]
[[0 0 0] [0 0 0]]
1 | # 2行3列の1埋めの配列を作成 |
[実行結果]
array([[ 1., 1., 1.],
[ 1., 1., 1.]])
Pythonの辞書型データは、キーと値をセットで管理でき記述方法も簡潔なのでとても便利なのですが、順序が保障されないため順番に管理したい場合に困ることがあります。
OrderedDictを使うと順序付きの辞書型としてデータを扱うことができます。
OrderedDictを使うためには、まずimport文を記述する必要があります。
(ここが一般的な辞書型を使うよりも手間に感じます。)
1 | from collections import OrderedDict |
実行結果は次のようになります。
OrderedDict([('key1', 'value1'), ('key2', 'value2'), ('key3', 'value3'), ('key4', 'value4')])
辞書に追加した順でデータが並んでいることが分かります。
私が辞書型データを使う場合には、順番を考慮することが多いのでこのOrderedDictを標準の辞書型データとして欲しいくらいです。
アプリケーションのデプロイやシステム管理タスクを行うツールとしてfabicモジュールをご紹介します。
fabicモジュールを使うと、ローカルやリモートでのコマンド実行や、ファイルのアップロード・ダウンロードが簡単にできるようになります。
次のコマンドを実行しfabicをインストールします。
1 | # インストール |
fabfile.pyを作成し、次のようなコードを書きます。ファイル名は必ずfabfile.pyにする必要があります。
4行目から7行目は環境に応じて設定して下さい。
1 | from fabric.api import * |
一通りの基本操作は上記のコードでカバーできていると思います。
コマンドの実行もファイル転送もとてもシンプルに書くことができます。
動作を確認する場合は、fabコマンドにfabfile.py内の関数名を指定して実行します。
1 | fab task1 |
Pythonからscp転送を行ってみます。
scp転送とはssh通信を使ったファイル転送です。
Pythonからscp転送を行うためには paramiko と scp というライブラリをインストールする必要があります。
1 | pip install paramiko |
scp転送を行う最小コードは次のようになります。
11行目では環境に応じて、IPアドレス・ポート番号・ユーザ名・パスワードを設定してください。
1 | import scp |
SCP送信する場合でも、SCP受信する場合でも、送信先に同じ名称のファイルがあると上書きされるので注意して下さい。
また、ディレクトリを指定することはできないので複数ファイルを送信する場合は、tarコマンドやzipコマンドを使って1ファイルにまとめてからscp転送する必要があります。