投稿日: | 最終更新日:
【科学計算】機械学習に便利なNumPyの基本!その1【Python】
PythonライブラリのNumpyについて紹介します。
Numpyはどんなライブラリ?
Numpy(なんぱい)は、高度な数値計算ができるライブラリです。高次元の配列をPythonから使えるようになります。機械学習、AIの分野で必須になります。
数学に強い
Pythonで、行列やベクトルを使った計算に使われます。行列やベクトルの加算・減算・内積・外積といった基本的な計算や、逆行列・連立1次法式の求解機能があります。また、行列計算に優れているため、機械学習の画像処理には頻繁にしようされます。
準備
①VSCodeをインストールします。
→MacOSでVisual Studio Codeをインストール
②VSCodeにPython実行環境を作ります。
→【MacOS】PythonをインストールしてVSCodeの実行環境をつくる【Python】
③Anacondaをインストールします。
→【MacOS】Anaconda3をインストールする【Python3】
④MacPCにインストールしたVSCODEからAnaconda3を利用できる状態にします。
→【MacOS】Visual Studio Code(VSCode)にAnacondaの仮想環境を指定【MacOS】
環境
PC | MacBook Air (Retina, 13-inch, 2019) |
---|---|
CPU | 1.6 GHz デュアルコアIntel Core i5 |
メモリ | 16 GB 2133 MHz LPDDR3 |
OS | Catalina 10.15.7 |
Visual Studio Code | 1.50.0 |
Conda | 4.9.2 |
matplotlib | 3.4.2 |
numpy | 1.20.3 |
インストール・インポート方法
pipコマンドでインストールします。
pip instarll numpy
以下のようにImportします。
import numpy as np
Numpy配列
Numpy配列は数値を扱うことに最適化されている配列です。ただし、同じ型のオブジェクトしか格納できません。その代わり、list関数で作ったリストよりも速いです。数値意外にも、ブール型、ユニーク文字列、Pythonオブジェクト型も扱えます。
Numpyで1次元配列を作る
ndarray(エヌディアレイ)配列を使います。Pytonにはもともとlistなどの配列機能がありますが、これらと動きが違います。
import numpy as np x = np.array([13,16,19])
xがndarrayオブジェクトとなります。
ndarrayの特徴
- 同じ型を持つ要素しか格納することができない
- 各次元ごとの(2次元なら列ごとや行ごと)の要素数は必ず一定
- C言語を元に、最適化された行列演算を行うため効率的な処理をすることができる
Listとの違い
Listで掛け算をすると、以下のような結果になります。配列が単純に同じ値のまま2倍になります。
y = [13,16,19] y_2 = y * 2 #[13,16,19,13,16,19]
ところが、ndarrayに同じ計算をすると、以下のように配列のそれぞれの値に掛け算を行います。
import numpy as np x = np.array([13,16,19]) x_2 = x * 2 #[26,32,38]
mapを使用すれば、上記と同じことができますが、ndarrayの優れた部分は、配列同士で演算や行列計算ができることです。
行列計算
行列は、高校の数Cで学ぶ人がほとんどだと思います。ndarryaの優れているところは、配列内の大量の数値を高スピードで計算できることです。「x_2 = x * 2」は、行列の定数倍の計算結果と同じになります。
import numpy as np x = np.array([13,16,19]) x_2 = x * 2 #[26,32,38]
ndarryaは多次元配列も扱える
以下のようにnp.arrayに多次元配列を指定すれば、多次元配列を扱うことができるようになります。
import numpy as np x = np.array(多次元リスト)
例文
以下のように指定した場合、[10,14,15]と[20,24,26]が行となります。10,20と14,24と15,26が列となります。
import numpy as np x = np.array( [[10,14,15], [20,24,26]] )
3次元配列
以下のように指定した場合、3次元配列となります。
import numpy as np x_3 = np.array( [[[10,11],[13,14],[15,16]] [[20,21],[23,24],[26,27]]] )
カラー画像がまさに3次元配列です。
配列の操作
ndimで配列の次元を調べる
ndimを使用すると、配列の次元を調べることができます。
import numpy as np x_1 = np.array([1,2,3]) x_2 = np.array( [[10,12,13], [20,21,23]] ) x_3 = np.array( [[[10,11],[13,14],[15,16]] [[20,21],[23,24],[26,27]]] ) print(x_1.ndim) >>1 print(x_2.ndim) >>2 print(x_3.ndim) >>3
shapeで各次元のサイズを調べる
Numpy配列が大きくなると配列オブジェクトを数えて形状を把握することが困難です。Shape関数を使うと配列のオブジェクトを行列でカウントできます。
import numpy as np x_1 = np.array([1,2,3]) x_2 = np.array( [[10,12,13], [20,21,23]] ) x_3 = np.array( [[[10,11],[13,14],[15,16]] [[20,21],[23,24],[26,27]]] ) print(x_1.shape) >>(3,) print(x_2.shape) >>(3,2) print(x_3.shape) >>(2,3,2)
- x_1は、1次元で3つの要素があるので(3,)
- x_2は、2次元で行の数が2で列の数が3なので(2,3,)
- x_3は、3次元で外側から2つの要素・その中に3つの要素、さらにその中に2つの要素なので(2,3,2)
次回
工事中。
- Python 114
- 制作 54
- RaspberryPi 41
- Django 40
- WordPress 40
- Linux 27
- VPS 22
- JavaScript 21
- PHP 20
- HTML・CSS 19
- AWS 16
- 仮想環境 15
- レスポンシブデザイン 13
- マイコン 11
- WEB全般 11
- 動画製作 9
- Webサービス 8
- 統合開発環境 8
- 機械学習 8
- PyCharm 7
- jQuery 7
- AfterEffects 7
- 起業・設立 7
- Django REST framework 6
- C# 6
- デザイン 6
- SEO 6
- pydata 6
- Visual Studio 5
- 数学 5
- 携帯サイト 5
- heroku 5
- Mac 5
- illustrator 5
- node.js 5
- Anaconda 5
- Nginx 4
- Jupyter Notebook 4
- インフラ 4
- Google Colaboratory 4
- symfony 4
- Webスクレイピング 3
- photoshop 3
- Go言語 3
- PC 3
- ツール 3
- Docker 3
- facebook 3
- 作業効率化 3
- データベース 3
- Cloud9 3
- コマンド 2
- micro:bit 2
- Kali Linux 2
- Webサーバー 2
- MariaDB 2
- ドローン 2
- コンテナ 2
- DaVinci Resolve 2
- ネットワーク 2
- Java 2
- movie 2
- PCDJ 2
- 音楽 2
- XSERVER 2
- Ansible 1
- Vue.js 1
- JSON 1
- Bootstrap 1
- バージョン管理システム 1
- SSL 1
- S3 1
- ムームードメイン 1
- ネットワーク 1
- アニメーション 1
- D3.js 1
- Rhino 1
- アニメ 1
- git 1
- windows 1
- アクセス解析 1
- スマートフォン 1
- アフィリエイトノウハウ 1
- 知識 1
- TypeScript 1
- 役立つ本・書籍 1
- データサイエンス 1
- ESP32 1
- AI 1
- ownCloud 1
- API 1