【numpy】zeros_like (ones_like) 関数の基本的な使い方についてわかりやすく解説!【Python】

今回は zeros_like 関数と ones_like 関数の使い方について解説していきます。

それぞれ特定の配列と同じ形で numpy 配列を新たに生成するための関数になります。
非常によく使われる関数になりますので、python 初心者の方にもわかりやすいように解説いたします。

zeros_like 関数と ones_like 関数はそれぞれ違う関数ですが得られる配列の要素が 0 か 1 かの違いしかないのでまとめて解説していきます。

スポンサーリンク
目次

zeros_like (ones_like) 関数とは

zeros_like (ones_like) 関数とは ある配列の形と同じ形のnumpy配列を生成することができる関数です。

例えば、機械学習では学習の過程を配列に保存したりしますが、新たに学習を進めるために学習過程が保存された配列と同じ形状の配列、もしくは少し変形させた配列が必要になったりする場面があります。

そのような場合に使われる関数となります。

簡単に、基にする配列と同じ形状の配列を要素が0、もしくは1で新規作成するという風に考えてもらえれば大丈夫です。

簡単な zeros_like (ones_like) 関数の使い方

zeros_like (ones_like) 関数は配列が必須の引数となっており、生成したい形状の配列さえ指定すれば利用することができます。

使い方は以下のように配列を引数とするだけです。

np.zeros_like( 配列 )

-サンプルコード

zeros_like (ones_like) 関数の各パラメータおよび戻り値について

それでは zeros_like (ones_like) 関数の各パラメータと戻り値について詳細に解説していきます。

zeros_like (ones_like) 関数は以下のような引数で呼び出すことができます。

ndarray = zeros_like(list , dtype = float , order = ‘K’ , subok=True, shape=None)

ndarray = ones_like(list , dtype = float , order = ‘K’ , subok=True, shape=None)

zeros_like (ones_like) 関数は上記のように必須の引数である配列とそれ以外の4つのデフォルト引数から成り立っています。

各引数についてはそれぞれ以下のような役割があります。

記載例 :

ndarray  = np.zeros_like( list , float , ‘K’)
ndarray  = np.ones_like( list )  #必須の引数のみ

区分項目名説明
引数 : 必須list基にする配列を指定します。
引数 : 任意dtype要素のデータ型を指定します。省略可能で、デフォルトは float 型です。
引数 : 任意orderデータの保存方法を指定します。省略可能で、デフォルトは ‘K’ です。(’C’ , ‘F’ , ‘A’ , ‘K’から選択)
引数 : 任意subok引数に指定する配列のサブクラスを引き継ぐかどうかを指定します。デフォルトはTrueです。
引数 : 任意shape新しく生成する配列の形状を指定します。つまり元の配列の形状にはならず新しく指定した値に上書きされ、経常以外のサブクラスやデータ型等を引き継ぐことになります。
戻り値配列 ( ndarray )引数に指定した内容から新たに numpy 配列を戻り値として返却します。

引数

list (配列の指定)

配列 の指定例 : np.zeros_like( list )

list は、zeros_like , ones_like 関数における唯一必須の引数で、生成する配列の基になる配列を指定します。

配列は numpy の配列であれば、通常の list でも問題ありません。

基本は新たに生成する配列の性質は基にする配列の性質を引き継いで入ればよい場合が多いので、他のデフォルト引数は特に指定せず配列だけを指定して使用することが多いと思います。

そのため、使う時や kaggle のコードを読むときは zeros_like (ones_like) は同じ構造の配列を新しく 0 または 1 で作り直しているんだなという風に見てもらえればスムーズにコードが読むことができると思います。

dtype(データ型)

dtypeの指定例 : np.zeros_like( list , float)

dtypeはデータの型を指定するためのデフォルト引数です。

デフォルトには None が設定されています。
つまり、設定しない限りは引数に指定した配列のデータ型が用いられます。

dtype を指定することでそのデータ型に指定することができます。

-サンプルコード

order(格納方法)

orderの指定例 : np.ones_like ( list , ‘K’)

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

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

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

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

Aは元の配列の並びに従って C言語方式ならC、Fortran方式ならFになる格納方式です。
つまりAutoってことですね。

Kは元の配列が a で指定できないような並びの場合にできる限り近づける方式です。

zeros_like もしくは ones_like 関数では生成する配列が0もしくは1になってしまうのであまり意味をなさないかもしれません。

どういった違いがあるのか確認したい場合は numpy 関数で確認することができますので確認してみるとよいでしょう。

サンプルコード

subok(サブクラスの継承)

orderの指定例 : np.ones_like ( list , subok=True)

subokはサブクラス継承をするか否かを指定するデフォルト引数です。

Trueを指定すれば元の配列が持つサブクラスを引き継ぐことができます。
配列のサブクラスというと matrix という種類の配列があるのでこれを使う場合に使用することになります。

逆に指定しなければ基本クラスの配列、つまり ndarray 配列になります。

デフォルトはTrueです。あまり、使う場面がイメージできませんが基本はTrueで使用することになると思います。

サンプルコード

shape(形状の指定)

orderの指定例 : np.ones_like ( list , shape=(2,4))

shape は配列の形状を指定するために使用されるデフォルト引数です。
通常zeros_like や onese_like を使用する際は引数に使う配列の形で新しく配列が欲しい場合に使われることが多いですが、配列の性質だけが欲しい時に形状を指定して使用することになると思います。

ただ、前述したように配列の形状をそのまま新しく生成する配列にもほしい場合が殆どですので、使われることは殆どないと思っていいと思います。

サンプルコード

戻り値

ndarray = zeros_like(list , dtype = float , order = ‘K’ , subok=True, shape=None)

ndarray = ones_like(list , dtype = float , order = ‘K’ , subok=True, shape=None)

zeros_like および ones_like の戻り値は元の配列にもよりますが、 ndarray 配列が戻り値になります。

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

nupmy 配列を用意する方法は以下のようにすれば生成できます。

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

通常は上記のようにして初期化して用意しますが、zeros_like (ones_like) 関数を使えば引数に指定した配列の形状および性質を引き継いだ状態で新しく配列を生成できるというわけです。

いかがでしょうか。
基本は zeros_like (ones_like) 関数は機械学習におけるCNNの畳み込み層等で使われたりしますが、同じ形状の配列が欲しいときに使えると思いますので、状況に応じて使ってみるとよいでしょう。

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

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

この記事を書いた人

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

コメント

コメントする

目次
閉じる