【NumPy入門 np.zeros】0で初期化した配列を作るzeros関数の使い方

Pythonの行列計算ライブラリNumPyは配列を初期化する関数がたくさんあります。

その中から、この記事では配列の全要素を0で初期化するnp.zeros関数について紹介します。

また、配列を0で初期化するnp.zeros関数については、以下の記事で解説しています。

目次

np.zerosの引数と返り値

numpy.zeros(shape, dtype=float, order=’C’)

shapeとdtype(要素の型)を指定して、0で埋められた配列を返します。

Parameters:
shape : int型かint型のtuple

新しい配列のshapeです。 例, (2, 3) or 2.

dtype : データ型, このパラメータはオプションなので、指定しなくてもOKです。

新しい配列のデータ型を指定します。, 例, numpy.int8などを指定します。 デフォルトでは numpy.float64.

order : {‘C’, ‘F’}, このパラメータはオプションです。デフォルトでは‘C’

多次元配列を行優先 (C-style) か列優先 (Fortran-style) でメモリに格納するかを指定します。

Returns:
out : ndarray

パラメータで指定した条件で0初期化された配列を返します。

使い方

jupyter-labjupyter-notebookを使って、以下のコードを試してみてください。

In [~]と書かれているセルがコード、Out[~]と書かれている部分が出力結果になります。

In [1]:
import numpy as np

基本的な配列の作り方

第一引数に新しく作りたい配列のshapeを指定すれば、簡単に配列が作成できます。

In [2]:
x = np.zeros(5)
x
Out[2]:
array([0., 0., 0., 0., 0.])

配列の情報をまとめて見るために、以下の関数を作っておきましょう。

In [3]:
def array_info(x):
    print("配列のshape", x.shape)
    print("配列の要素のデータ型", x.dtype)
    print("配列の中身\n",x)

このarray_info関数で先程作った配列を見てみると、要素が5つもつ配列ができていることがわかりますね。

また、前述の通り、dtypeを指定していない場合は、float64型になることがわかります。

In [4]:
array_info(x)
Out:
配列のshape (5,)
配列の要素のデータ型 float64
配列の中身
 [0. 0. 0. 0. 0.]

同じようにして、4×3の配列を作ります。
タプルで指定してあげるだけです。

In [5]:
x2 = np.zeros((4,3))
array_info(x2)
Out:
配列のshape (4, 3)
配列の要素のデータ型 float64
配列の中身
 [[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]

三次元配列も同様にタプルでshapeを指定して作ります。

In [6]:
x3 = np.zeros((4,3,2))
array_info(x3)
Out:
配列のshape (4, 3, 2)
配列の要素のデータ型 float64
配列の中身
 [[[0. 0.]
  [0. 0.]
  [0. 0.]]

 [[0. 0.]
  [0. 0.]
  [0. 0.]]

 [[0. 0.]
  [0. 0.]
  [0. 0.]]

 [[0. 0.]
  [0. 0.]
  [0. 0.]]]

要素の型を指定して配列を作る方法

dtypeというパラメータに、numpy.float32などの型を指定することで、任意の型で0初期化できます。

In [7]:
x4 = np.zeros(3, dtype=np.int16)
array_info(x4)
Out:
配列のshape (3,)
配列の要素のデータ型 int16
配列の中身
 [0 0 0]

真偽値(bool)でも可能です。この場合は0の代わりにFalseで埋められた配列ができます。

In [8]:
x5 = np.zeros(3, dtype=np.bool)
array_info(x5)
Out:
配列のshape (3,)
配列の要素のデータ型 bool
配列の中身
 [False False False]

ある配列と同じshapeの0初期化配列を作るnp.zeros_like

np.zerosと似た関数に、np.zeros_like関数があります。

この関数は第一引数にshapeではなく、shapeを真似たい配列を指定してあげると、np.zerosと同じように0初期化した配列を作ってくれます

In [9]:

x6 = np.zeros_like((x3))
array_info(x6)
Out:
配列のshape (4, 3, 2)
配列の要素のデータ型 float64
配列の中身
 [[[0. 0.]
  [0. 0.]
  [0. 0.]]

 [[0. 0.]
  [0. 0.]
  [0. 0.]]

 [[0. 0.]
  [0. 0.]
  [0. 0.]]

 [[0. 0.]
  [0. 0.]
  [0. 0.]]]

まとめ

この記事ではNumPyで0初期化した配列を生成する関数、np.zerosとnp.zeros_likeを紹介しました。

NumPyは高速に行列計算を行うためには必須のライブラリです。

この記事で配列の初期化を勉強して、様々な科学計算の実装・機械学習の実装に挑戦してみてください!

今回の記事は下記の記事を参考にしています。
参考記事:

この記事を書いた人

第一言語はPythonです。
皆さんRustやりましょう。

目次