
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についてスキルをつけるなら、Udemyの教材がオススメです。
>> 【NumPy・Python3で】ゼロから作るニューラルネットワーク
Udemyは動画ベースで学習ができるので、
実際のコードや図解を見ながら、学習を進めることができます。
さらに今なら30日間返金保証がついているので、
一度購入して自分の思っていたものと違った場合は費用がかかりません。
この教材はNumpyを使って機械学習を行うところまでを動画で解説しています。
誰もがつまずきがちなNumpyライブラリ特有の仕様や機械学習という概念について、分かりやすく解説されています。独学でPythonによる機械学習を学ぶにはピッタリの教材です。
また、Pythonについて基礎から学ぶのであれば、オンラインスクールがオススメです。
オンラインスクールで学習すると、講義も分かりやすく、
サポート体制もしっかりしているので、これからPythonを学ぶ人にもオススメです。
オンラインで無料レッスンを体験することもできるので、
自分にあっているかどうかを確かめることができます。
オススメは以下の3つです。
どのスクールも無料体験が用意されているので、
契約前に自分に最適なスクールを探すことができるでしょう。
✔️オススメのプログラミングスクール ベスト3
- 未経験からIT業界へ転職なら【DMM WEBCAMP】
※ROLANDさんがプロモーターを務める有名スクールです。無料体験の内容も充実していて人気です。 - プログラミングのオンラインスクールCodeCamp
※ここも有名なスクールです。サポート体制がしっかりしているので安心です。 - 3ヶ月間のプログラミングスクール【Tech Boost】
※比較的新しいスクールですが、そのクオリティの高さから伸びてきているスクールです。
プログラミングスクールについては「プログラミングスクールで失敗しないためには【オススメベスト3も紹介】」の記事でも紹介しています。
気になった方はぜひチェックしてみて下さい〜!
コメント