【numpy】zeros 関数の基本的な使い方【Python】

今回は numpy の関数の一つである zeros 関数の基本的な使い方について解説いたします。

配列を生成したときに 0 で初期化した ndarray 配列が欲しいという時は多いと思いますので、わかりやすく見れるように解説していきます。

スポンサーリンク
目次

zeros 関数とは

zeros 関数とは配列の要素を 0 で初期化するための関数です。

機械学習などを実施するときに、学習パラメータの重み、いわゆる学習した値を保持するために配列を用意しますが、最初は0で用意したいときが多くあります。そんな時にこの関数は非常によく使われます。

この関数と同じような用途で使われる empty 関数がありますが、より高速に配列を用意するための関数です。
配列の初期値が 0 でほしい場合にはこの zeros 関数を、特に値が必要ない場合は empty 関数を使用するとよいでしょう。

また、zeros 関数と同じような動きをする ones 関数もありますがこちらは値が 1 でほしい時に使用するものです。
1 で初期化したいという明確な目的がある時はこちらを使います。(逆に言えば大半は zeros 関数の方が出番が多い気がします。)

簡単な zeros 関数の使い方

まずはもっとも簡単に利用できる zeros 関数の使い方について解説いたします。
使い方は以下のように生成したい配列の形状を指定するだけです。

np.zeros( 配列の形状 )

-サンプルコード

また、生成データのデータ型を指定する場合は以下のようにします。

整数であれば [int] を、少数を含む値であれば [float] を…といった具合です。

zeros 関数の各パラメータおよび戻り値について

それでは各パラメータおよび戻り値に関して詳しく確認していきます。

まずは記載方法です。

ndarray  = np.zeros(shape , dtype = float , order = ‘C’

記載例 :

ndarray  = np.zeros( ( 2, 4 ) , float , ‘C’)
ndarray  = np.zeros( ( 2, 4 ) )  #必須の引数のみ

区分項目名説明
引数 : 必須shape生成する配列の形を指定します。
引数 : 任意dtype要素のデータ型を指定します。省略可能で、デフォルトは float 型です。
引数 : 任意orderデータの保存方法を指定します。省略可能で、デフォルトは ‘C’ です。(’C’ か ‘F’ から選択)
戻り値配列 ( ndarray )shape で指定した形状の未初期化のからの配列を生成します。

引数

shape (配列の形状)

shape の指定例 : np.zeros( ( 2, 4 ) )

shape は、zeros 関数における唯一必須の引数で、配列の形状を指定します。

指定方法はタプルのデータ型で指定します。(1次元配列ならint型でも問題ないです。)

1次元配列を指定したい場合は zeros(5) (もしくは zeros((5,)) )、2次元配列なら zeros((2,4))といった具合で指定します。

配列の形状は numpy 配列であれば、numpy のshape 関数で取得できるので zeros(nparray.shape) といった形で指定したりすると便利です。

ただこれには類似の zeros_like という関数があるのでそちらを使う方が良いかもしれません。

dtype(データ型)

dtypeの指定例 : np.zeros ( ( 2, 4 ) , int )

dtypeは作成される配列の要素のデータ型を指定します。

デフォルト引数であり、初期値には float が設定されています。

そのため、特に指定しなくてもよい引数です。

intにて配列を生成したい場合は “int” と記載してあげるだけです。

サンプルコード

order(格納方法)

orderの指定例 : np.zeros ( ( 2, 4 ) , int , ‘F’)

orderはデータの格納方法を指定します。

‘C’‘F’ から選択するデフォルト引数です。デフォルトは ‘C’ になっています。

Cの意味はC言語方式という意味で行優先に格納する方式です。

Fの意味としてはFortran方式という意味で反対に列優先に格納する方式です。

zeros関数に関しては全部配列の要素が 0 になるので、殆どあってないようなものだと思っています。。。

因みに実際にどんな違いがあるかどうかは zeros 関数を使用すると要素がすべて0になるので、どういう格納になっているかわからないですが、 numpy 配列を作成するときにも同様に order を指定できるので、それで確認することができます。

サンプルコード

結果 : 

□□□C言語方式□□□

[[0 1 2 3 4]
[5 6 7 8 9]]

□□□Fortan形式□□□

[[0 2 4 6 8]
[1 3 5 7 9]]

C言語方式であれば行側に数字が大きくなっており、Fortan形式であれば、列方向に数字が大きくなっているのがわかりますね。

戻り値

ndarray = np.zeros ( ( 2, 4 ) , int , ‘F’)

zeros 関数の戻り値は ndarray という numpy 配列です。

ndarrayとは簡単に numpy で利用できる多次元リストのことです。

以下のようにして記述いたします。

ndarray = np.array( [1, 3, 5] )

通常は上記のようにして初期化して用意しますが、zeros 関数を使えば形状の ndarray の値を全て 0 にした状態で用意できるというわけです。

いかがでしょうか。
基本はzeros関数は機械学習におけるCNNの畳み込み層等で使われたりしますが、要素0の配列を用意するというのは割と便利ですので機会があればAI関係なく使ってみるとよいでしょう。

今回はここまでです。
お疲れ様でした。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

本業ではPHPを使ったWEBアプリやJavaを使用した基幹アプリを作成しております。Pythonは個人的に勉強しており、E資格を取ったりしたおかげで、業務でAIの研究とかも任されるようになりました。学習のアウトプットのために本サイトを運営しておりますが、これからPythonを学ぶという人のお役に立てればいいなと思います。わからないことや調査して記事にしてほしいことがございましたらご連絡いただけると幸いです。

コメント

コメントする

目次
閉じる