numpy.zerosの使い方が分かりません。
0で初期化されたndarrayを生成する関数だ。
この関数の使い道と併せて解説しよう。
✔️ 本記事のテーマ
numpy.zeros関数の使い方
✔️ 読者さんへの前置きメッセージ
本記事は「numpy.zeros関数」について書いています。
この記事を読むことで「numpy.zeros関数の使い方と使い道」を理解できます。
Numpyは数値計算に特化したPythonライブラリです。
そして、numpy.zeros関数は、Numpyの配列を生成するときに使用します。
結論だけ述べると、
numpy.zeros関数を使うことで全要素が0のNdarray(Numpy配列)を生成することができます。
では、そんな関数をどのような場面で使用するのでしょうか?
そこらへんのnumpy.zeros関数の使い道も併せて解説します。
なお、numpyのその他の関数については以下の記事でも解説しています。
Numpyとは?
numpyは、Pythonで数値計算をするためのライブラリです。
基本的な計算はPythonだけでも出来ますが、
numpyを使うことで難易度の高い計算や複雑な計算を
簡単にそして高速に行うことができます。
近年、numpyの注目度が高まっている背景には、
機械学習の台頭が挙げられるでしょう。
Python自体、機械学習と関連の高い言語ですが、
numpyライブラリはその便利さから機械学習分野では欠かせないライブラリです。
なお、Numpyついての詳細は
「numpyの使い方と便利な関数」の記事で解説しています。
numpy.zeros関数の使い方
numpy.zeros関数は要素0のndarrayを作成する関数です。
numpy.zeros関数の使い方は以下の通りです。
numpy.zeros(shape, データ型, 配列の並べ方)
第1引数に生成したい配列のshape、
第2引数にデータ型(デフォルトはfloat64)、
第3引数にorderを指定します。
第3引数は配列の順序方法を指定する場合に使われるものなのですが、
あまり使用する機会はないでしょう。
コードで例を示しましょう。
import numpy as np
# 1次元配列
1d_sample = np.zeros(10)
# [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]
# 3×4の2次元配列
2d_sample = np.zeros((3,4))
# [[ 0., 0., 0., 0.],
# [ 0., 0., 0., 0.],
# [ 0., 0., 0., 0.]]
このように0を要素とするNdarrayを作ることができます。
shapeを指定することで任意の次元数のNdarrayを生成することができます。
また、第2引数にデータ型(例えばint)を指定するとその型で要素を生成します。
import numpy as np
int_sample = np.zeros(10, dtype = int)
# [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
numpy.zeros関数の使い道
numpy.zeros関数で作る「要素が0のNdarray」は機械学習などの複雑な計算で使用されます。
機械学習や行列計算などの複雑な計算では、
場合によって計算に使用するNdarrayを初期化しておく必要があります。
そのような場合でかつ0埋めしたい時に、
numpy.zeros関数を使って「要素が0のNdarray」を生成します。
numpy.zeros関数は生成するNdarrayのshapeさえ指定すれば良いので、
効率的にコードを書くことができます。
このようなユースケースとして使うのが一般的でしょう。
numpy.zeros関数とnumpy.empty関数との違い
numpy.zeros関数によく似た関数にnumpy.empty関数があります。
どちらもNdarrayの初期化に使用されます。
numpy.zeros関数で生成するNdarrayは要素が0に固定されますが、
numpy.empty関数では要素がランダムなNdarrayが生成されます。
コードで示しましょう。
import numpy as np
sample = np.empty(10)
# [ 3.10503618e+231, 1.73060576e-077, 2.13922147e-314,
# 2.13939673e-314, 2.13939293e-314, 2.13939259e-314,
# 3.10503618e+231, -1.73060576e-077, 2.14579442e-314,
# 6.95335581e-309]
このように値がバラバラですね。
なお、要素の中身を0にしたい要件が特になければ、numpy.empty関数を使った方が高速です。
numpy.zeros関数とnumpy.zeros_like関数との違い
numpy.zeros関数とよく似た関数にnumpy.zeros_like関数というものがあります。
どちらも要素を0としたNdarrayの初期化に使用されます。
この2つの関数の違いは、
- numpy.zeros関数:shapeを指定できる
- numpy.zeros_like関数:既存のNdarrayと同じshapeのNdarray生成する
という点です。
コードで示しましょう。
import numpy as np
zeors_sample = np.zeros(10)
# [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]
input = np.array([1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0])
like_sample = np.zeros_like(input)
# [ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]
numpy.zeros関数は引数にshapeを指定します。
一方、numpy.zeros_like関数は、
引数にNdarrayを指定することで同じ形状のNdarrayを生成します。
既に定義されているNdarrayと同じ形状で0埋めしたいという場合は、
numpy.zeros_like関数を使うことでよりシンプルなコードになるでしょう。
numpy.zeros関数に似ているnumpy.ones関数
さらにNumpyには、numpy.ones関数という関数も用意されています。
その名前からも分かる通り、全要素を1とするNdarrayを生成する関数です。
import numpy as np
ones_sample = np.ones(10)
# [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]
積算用に結果を変えずに行列計算したいなど、
要素が1の多次元配列などを初期化する時に使用されます。
NumpyやPythonについてもっとスキルをつけるなら
今回は、Numpyのzeros関数について解説しました。
Numpyは画像認識や機械学習を行う上では、欠かすことのできないライブラリです。
Numpyを実践的に学ぶためには以下の書籍がオススメです。
この書籍はNumPyや高速計算手法についてかなり丁寧に解説されています。
NumPyの基本から始まり、現場で使える実践的な高速データ処理手法について解説します。
Numpy の基礎から実用まで幅広く学びたい方にオススメの書籍です。
エンジニアとしての自身の価値をチェックする(完全無料)
エンジニアとして、
自分の価値がどれくらいのものかご存知でしょうか?
エンジニアとしてIT業界に身を置いていると
今の会社でずっと働くのか、フリーランスとして独立するのか …
と様々な選択肢があります。
どの選択肢が正解なのかを見極めるためにも、選択肢を広げるためにも
自身の価値を知っておくことはとても重要です。
TechClips ME では、
職務経歴書をアップロードするだけで企業からのスカウトを受けることができます。
▼▼▼▼▼
▲▲▲▲▲
しかもTechClips MEでは想定年収を企業から提示してくれるので、
自身の価値を数字で分かりやすくたしかめることができます。
登録はもちろん完全無料なので、一度登録してみると良いかもしれません。
コメント