Python前処理講座

【numpy】ベクトル【数値計算】

こんにちは,shun(@datasciencemore)です!!

今回は,ベクトルについて説明していきます.

pythonでは,numpyを使用するとベクトル計算ができるようになります.

1.ベクトルの四則演算

ベクトルは基本,同じ長さであれば四則演算できます.

ちなみに四則演算というのは,足し算,引き算,掛け算,割り算のことです.

下図のようにvec_1というベクトルとvec_2というベクトルを足すと,同じ色の部分が足されて出力されます.

ベクトルの向きについて補足いたします.
前回はベクトルは横向きでしたが,今回は縦向きですね.
実はベクトルは縦向きのベクトルと横向きのベクトル,両方があります.
両方あるというか,どちらで考えてもよいといったほうが正確です.
どちらを使うかはその時次第で便利なほうを使用する感じです.
なので,縦ベクトルも横ベクトルも慣れてください.

四則演算のコードは以下のようになります.

慣れればそんなに難しくないですね!

2.ベクトルのブロードキャスト

前項で2つのベクトルを計算する際,基本,長さが同じである必要があると説明しました.

それでは,このようなベクトル同士は計算できるのでしょうか?

普通に考えると2番目のベクトルの長さが足りないので計算できないですよね.

ところが,実際にやってみると計算できます.

実は,2番目のベクトルはブロードキャストという機能を使って自動的に長さを調節しています.

どういうことかといいますと,足りない部分に対してブロードキャストすることで,この上のベクトルを使用して自動的に足りない部分を補完してくれるのです.

この機能は大変便利です.

ちなみにこの上のベクトルは,ただの数値でもOKです.

それではこんな感じで長さが2のベクトルを足そうとすると,どうなるでしょうか?

実はこれだとエラーとなります.

numpyでは,このように長さが1以外のベクトルについては混乱を避けるためブロードキャストしない仕様となっています.

Rだとこのようなベクトルも計算できたので,Rに慣れている人は注意してください.

コードは以下のとおりです.

3.ベクトルの要素抽出

ベクトルの要素抽出というのは,下の図のように全体のベクトルのうち,一部を抽出することです.

要素の位置を指定する方法は,全部で3つあります.

  1. インデックスで指定
  2. スライスで指定
  3. 論理値ベクトルで指定

これらのうち,①,②についてはリストと同じです.

①インデックスで指定

②スライスで指定

①,②はリストと同様なので簡単ですね.

③論理値ベクトルで指定

リストと違い,ベクトルは論理値ベクトルで要素を抽出することができます.

論理値ベクトルというのは,bool型のベクトルのことです.

イメージはこのような感じです.

ベクトルに論理値ベクトルを指定すると,Trueに該当する所を抽出してくれます.

この例だと,Trueがインデックス0, 2, 3の位置にあるため,インデックス0, 2, 3に対応する要素を抽出してくれます.

これは,条件を満たした要素を抽出する場合に便利です.

以下の処理で5以上の要素が抽出されます.

  1. vec >= 5の部分で,論理値ベクトル(FALSE, TRUE, TRUE, TRUE, FALSE)が返却される.
  2. 論理値ベクトル(FALSE, TRUE, TRUE, TRUE, FALSE)のTRUEの所が抽出される.

条件については,詳細に別記事にまとめる予定です.
今はなんとなく理解いただければOKです.

4.ベクトルの便利関数

numpyには便利な関数がいくつもあります.

その中で特によく使用する関数を以下に挙げます.

ここに示した関数は,ベクトルを入力とすることによって,指定した出力を算出してくれます.

sum

average

median

max

min

var

std

関数を使用した応用例

関数を使用した応用例として論理値ベクトルでよく使用する処理を紹介します.

sumとaverageを使用することで論理値ベクトルのTrueの個数と割合を算出することができます.

なぜかというと論理値ベクトルに対しコンピュータは,Trueを1,Falseを0として認識しているからです.

これらの処理はあまり知られていませんが,知っておくと便利なのでぜひマスターしてください.

5.規則的なベクトルの作成

こちらに挙げたnumpyの関数を使用すると,規則的なベクトルを簡単に作成することができます.

今回紹介する関数は

arrange,linspace, repeat, tileの4つになります.

もちろん,これら以外の関数もあるのですが,こちらの4つは非常に使用頻度が高いので,まずはこちらをマスターしましょう.

nは整数,x, y, zは数値,vecはベクトルを示しています.

arange

linspace

repeat

tile

まとめ

今回はbaseRのベクトルについて,以下のことをやってきました.

  1. ベクトルの四則演算
  2. ベクトルのブロードキャスト
  3. ベクトルの要素抽出
  4. ベクトルの便利関数
  5. 規則的なベクトルの作成

いやー,盛りだくさんでしたね!
たくさんありますが,どれも大事なところなので頑張って理解してくださいね.
次回は,論理値ベクトルの処理についてやる予定です.
それでは,お疲れさまでした!

次回

【numpy】論理値ベクトルの処理【数値計算】

こんにちは,shun(@datasciencemore)です!!前回は,ベクトルについて学びましたね.その中で,論理値ベクトルを使用することでベクトルの要素を抽出できることを覚えているでしょうか?今回 ...

続きを見る

-Python前処理講座