前書き
なんとなく使っている
普段私は、NumPyは色々な計算をしてくれるライブラリだな。
そのくらいの理解でなんとなく使っていました。
誰かのコードをみて、「ふむふむ、こう書いておけばいいのね。」
と。
今回は使い方をまとめてみました。
ひとつずつやってみよう
まずはインポート
NumPyを使用するには、最初にインポートをしなければいけません。
コマンドでPythonを開くか、エディターに記述しちゃってもいいでしょう。
import numpy as np
インポートしたから、これ以降はNumPyのメソッドは np と書きますよ。です。
NumPyは配列で計算する
なんか難しそうですが、要は 1 + 2 = 3, 2 + 2 = 4 ……と
ひとつずつ記述しなくても、[] で囲んだ複数の数字を順に計算してくれます。
それで、[] で囲んだものを配列という。
配列を作るには、np.array() を使用する。
xの配列を作るには
import numpy as np
x = np.array([1.0, 2.0, 3.0])
print(x)
答え
[1. 2. 3.]
といった感じ。
xとyの配列を計算するには
import numpy as np
x = np.array([1.0, 2.0, 3.0])
y = np.array([2.0, 4.0, 6.0])
x + y # 要素ごと(1番目同士、2番目同士、3番目同士)の足し算
答え
array([3., 6., 9.])
配列に対して、一つの数値で計算することもできる。
import numpy as np
x = np.array([1.0, 2.0, 3.0])
x / 2.0
答え
array([0.5, 1., 1.5])
N次元配列
なんじゃ?なんですが、見てみればそういうことね。です。
2次元配列の例です。
x = np.array([[1, 2], [3, 4]])
print(x)
答え
[[1 2]
[3 4]]
2組の要素が入っていますね。
2次元配列2個を計算してみると
import numpy as np
x = np.array([[1, 2], [3, 4]])
y = np.array([[3, 0], [0, 6]])
x + y
答え
array([[4, 2],
[3, 10]])
また1番目同士、2番目同士・・・と計算しています。
で、N次元だからどうなの?は置いといて
考えちゃうと先に進まないので、多次元を超ざっくり解釈。
まず、多次元配列だの変数がどうのだというとわからなくなるので、
とりあえず、
- 1次元配列・・・要素を縦か横に一直線に並べたもの(ベクトル)
- 2次元配列・・・行列
- 3次元以上・・・いっぱいある。多次元(テンソル)
くらいに考えて先に進んでいくことにします。
ブロードキャスト?
NumPyを使用すると、形状の異なる配列の計算も
自動でやってくれるます。
この機能をブロードキャストと呼ぶようです。
こんな形の計算
import numpy as np
x = np.array([[1, 2], [3, 4]])
y = np.array([10, 20]) # xとyは要素数が違い異なる形状の配列
x * y
答えはだいたい予想がつきます。
array([[10, 40],
[30, 80]])
yの1つの要素を、xの2つの要素どちらに対しても計算してくれています。
確かに指示してないのにやってくれていますね。
各要素へのアクセス
要素を番号でアクセスするわけですが、
スタート番号は、「0」になります。だから、「実際の1番目が 0番」です。
x の 0番目 の要素にアクセスしてみます。
import numpy as np
x = np.array([[1, 2], [3, 4], [5, 6]])
x[0] # 0番目を指定
答え
array([1, 2])
といったやり方のようです。
for を使って順番にアクセスする
ちょっと実用的になってきます。
もう考えるより、やってみたほうが早いのでやってみます。
「Nは、xの配列に順番にアクセスしたもの」
をやってみます。
import numpy as np
x = np.array([[1, 2], [3, 4], [5, 6]])
for N in x:
print(N)
答え
[1 2]
[3 4]
[5 6]
これは便利そうです。
コメント