はじめてのNumpy 3.arrayの計算、arrayの大きさを変え方

Python Numpy arrayの大きさの変え方、Numpyの計算

こんにちは。BOSSです。

初心者がNumpyを勉強してみたという

はじめてのNumpyシリーズ

今回は第3回目です。

今回は

  • arrayの演算

  • arrayの大きさを変える

この二点についてやっていきましょう。

前回まで

はじめてのNumpy 1.アレイの作成と要素へアクセス
はじめてのNumpy 2.要素の取り出し

arrayの計算

Numpyにはarray型とmatrix型と2種類あります。

arrayが配列、matrixが行列にあたるわけですが

一般には行列は二次元配列にあたります。

配列はテンソル(全範囲)、行列はベクトルですので1階のテンソルと言っても良いかと思います。

この2種類大きな違いとしては
matrix型では行列の演算、具体的には掛け算の処理が内積になります。

ここではarray型を扱いますが、またいずれmatrix型もまとめたいと思います。

arrayの計算の基本は要素ごとの四則演算です。

行列の掛け算はそうではないので、行列とは違うんだなくらいに思っておきましょう。

では四則演算をやっていきます。

まずはいつも通りNumpyをimportしましょう。

import numpy as np

つぎに、arrayを用意します。
次のようにしてみてください。

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

b = np.array([3, 2, 4])

足し算と引き算からみていきましょう。

print(a + b)
print(a - b)
[4 4 7]
[-2  0 -1]

このようになりますね。

十分暗算可能ですね!確認してみてください。

さて次は掛け算と割り算、あとは余りも求めてみましょうか。

print(a * b)
print(a / b)
print(a % b)
[ 3  4 12]
[0.33333333 1.         0.75      ]
[1 0 3]

こちらも要素ごとに計算がされている点は変わりません。

前述の通り掛け算も行列の内積ではなく、要素ごとの掛け算です。

そして割り算。

要素はすべて整数型でしたが、結果が割り切れない値になったため小数点型となっていることがわかりますね。

最後の余りも確かにあっていますね。

簡単ですが四則演算はこんな感じ。

特段むずかしいところはなかったかと思います。

arrayの変形

これからNumpyのarry型
次元をどうしていくかというの扱っていきます。

その中でarrayの作成だったりの知識を使いますので、必要に応じて第1回、第2回確認してみてください。

.reshape()

でarrayの形を変更することができます。やってみましょう。

まずは1次元のarrayを作成します。
0から99まで100個の要素を持つarray、arangeを用います。

arr1 = np.arange(0, 50)
print(arr1)
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 ]

これを10×5の二次元配列にしてみましょう。
.reshape()を用います。

arr1_1 = arr1.reshape(10, 5)
print(arr1_1)

するとこんな感じ

[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]
 [20 21 22 23 24]
 [25 26 27 28 29]
 [30 31 32 33 34]
 [35 36 37 38 39]
 [40 41 42 43 44]
 [45 46 47 48 49]]

ちなみに、形が合わないような指定をするとどうなるか。

print(np.arange(0, 50).reshape(10, 10))
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-8-99add0942e8e> in <module>()
----> 1 print(np.arange(0, 50).reshape(10, 10))

ValueError: cannot reshape array of size 50 into shape (10,10)

要素数と合わないよというエラーがしっかり返ってきました。

まとめ

今回は演算とarrayの大きさの変え方について学習していきました。

本当は次元操作まで含めたかったのですが、分量が多くなりすぎるので次回に回します。

それではまた、次回。