NumPyで全要素を同じ値で初期化した配列ndarrayを生成

NumPyですべての要素を同じ値で初期化した配列ndarrayを生成する方法は以下の通り。 形状(行数・列数など)shape、型dtypeを引数で指定して生成する方法。

numpy.zeros(): 0で初期化(ゼロ埋め) numpy.ones(): 1で初期化 numpy.full(): 任意の値で初期化

既存の配列と同じ形状shape、型dtypeで生成する方法(異なる型を指定することも可能)。

numpy.zeros_like(): 0で初期化(ゼロ埋め) numpy.ones_like(): 1で初期化 numpy.full_like(): 任意の値で初期化

それぞれについて、サンプルコードとともに説明します。 空の配列を生成する方法は以下の記事を参照。

Pythonのリスト(組み込み型list)を初期化したい場合は以下の記事を参照。

numpy.zeros(): 0で初期化(ゼロ埋め)

全要素を0で初期化した配列ndarrayを生成したいときは、numpy.zeros()を使います。

numpy.zeros — NumPy v1.13 Manual

生成したい配列の形状shapeを引数として渡す。スカラーの場合は一次元配列、タプルの場合は多次元配列となります。

import numpy as np

print(np.zeros(3))
# [ 0.  0.  0.]

print(np.zeros((2, 3)))
# [[ 0.  0.  0.]
#  [ 0.  0.  0.]]

デフォルトだと型dtypeはfloat64。引数dtypeで指定することもできます。

print(np.zeros(3).dtype)
# float64

print(np.zeros(3, dtype=np.int))
# [0 0 0]

print(np.zeros(3, dtype=np.int).dtype)
# int64

numpy.ones(): 1で初期化

全要素を1で初期化した配列ndarrayを生成したいときは、numpy.ones()を使います。

numpy.ones — NumPy v1.13 Manual

使い方はnumpy.zeros()と同じ。 生成したい配列の形状shapeを引数として渡す。

print(np.ones(3))
# [ 1.  1.  1.]

print(np.ones((2, 3)))
# [[ 1.  1.  1.]
#  [ 1.  1.  1.]]

デフォルトだと型dtypeはfloat64。引数dtypeで指定することもできます。

print(np.ones(3).dtype)
# float64

print(np.ones(3, dtype=np.int))
# [1 1 1]

print(np.ones(3, dtype=np.int).dtype)
# int64

numpy.full(): 任意の値で初期化

0や1ではなく任意の値で全要素を初期化した配列ndarrayを生成したいときは、numpy.full()を使います。

numpy.full — NumPy v1.13 Manual

第一引数に生成したい配列の形状shapeを、第二引数に任意の埋める値fill_valueを渡す。

print(np.full(3, 100))
# [100 100 100]

print(np.full(3, np.pi))
# [ 3.14159265  3.14159265  3.14159265]

print(np.full((2, 3), 100))
# [[100 100 100]
#  [100 100 100]]

print(np.full((2, 3), np.pi))
# [[ 3.14159265  3.14159265  3.14159265]
#  [ 3.14159265  3.14159265  3.14159265]]

型dtypeは埋める値fill_valueに応じて設定される。例えば、100だとint64で100.0だとfloat64になる。

print(np.full(3, 100).dtype)
# int64

print(np.full(3, 100.0).dtype)
# float64

print(np.full(3, np.pi).dtype)
# float64

引数dtypeで型dtypeを指定することもできます。型変換(キャスト)された値で初期化される。

print(np.full(3, 100, dtype=float))
# [ 100.  100.  100.]

print(np.full(3, np.pi, dtype=int))
# [3 3 3]

numpy.zeros_like(): 0で初期化(ゼロ埋め)

元となる配列ndarrayを作成しておく。例として、型dtypeがintの配列とfloatの配列を準備します。

import numpy as np

a_int = np.arange(6).reshape((2,3))
print(a_int)
# [[0 1 2]
#  [3 4 5]]

a_float = np.arange(6).reshape((2,3)) / 10
print(a_float)
# [[ 0.   0.1  0.2]
#  [ 0.3  0.4  0.5]]

全要素を0で初期化した配列ndarrayを生成したいときは、numpy.zeros_like()を使います。

numpy.zeros_like — NumPy v1.13 Manual

第一引数に元となる配列を指定します。 生成される配列の型dtypeは元の配列の型dtypeになる。

print(np.zeros_like(a_int))
# [[0 0 0]
#  [0 0 0]]

print(np.zeros_like(a_float))
# [[ 0.  0.  0.]
#  [ 0.  0.  0.]]

引数dtypeで指定することもできます。

print(np.zeros_like(a_int, dtype=np.float))
# [[ 0.  0.  0.]
#  [ 0.  0.  0.]]

numpy.ones_like(): 1で初期化

全要素を1で初期化した配列ndarrayを生成したいときは、numpy.ones_like()を使います。

numpy.ones_like — NumPy v1.13 Manual

使い方はnumpy.zeros_like()と同じ。 第一引数に元となる配列を指定します。 生成される配列の型dtypeは元の配列の型dtypeになる。

print(np.ones_like(a_int))
# [[1 1 1]
#  [1 1 1]]

print(np.ones_like(a_float))
# [[ 1.  1.  1.]
#  [ 1.  1.  1.]]

引数dtypeで指定することもできます。

print(np.ones_like(a_int, dtype=np.float))
# [[ 1.  1.  1.]
#  [ 1.  1.  1.]]

numpy.full_like(): 任意の値で初期化

0や1ではなく任意の値で全要素を初期化した配列ndarrayを生成したいときは、numpy.full_like()を使います。

numpy.full_like — NumPy v1.13 Manual

第一引数に元となる配列を、第二引数に任意の埋める値fill_valueを渡す。生成される配列の型dtypeは元の配列の型dtypeになる。

print(np.full_like(a_int, 100))
# [[100 100 100]
#  [100 100 100]]

print(np.full_like(a_float, 100))
# [[ 100.  100.  100.]
#  [ 100.  100.  100.]]

埋める値fill_valueがfloatでも元の配列がintだと、intに型変換(キャスト)されてしまうので注意。

print(np.full_like(a_int, 0.123))
# [[0 0 0]
#  [0 0 0]]

print(np.full_like(a_float, 0.123))
# [[ 0.123  0.123  0.123]
#  [ 0.123  0.123  0.123]]

引数dtypeで型dtypeを指定することもできます。

print(np.full_like(a_int, 0.123, dtype=np.float))
# [[ 0.123  0.123  0.123]
#  [ 0.123  0.123  0.123]]

シェア

関連カテゴリー

Python NumPy

pandas.DataFrame, SeriesとNumPy配列ndarrayを相互に変換 Python, OpenCV, Pillow(PIL)で画像サイズ(幅、高さ)を取得 NumPy配列ndarrayの対角成分の抽出、対角行列の作成(diag, diagonal) NumPy配列ndarrayをタイル状に繰り返し並べるnp.tile NumPy配列ndarrayをイミュータブル(書き換え禁止)に設定 NumPy配列ndarrayの行・列を任意の順番に並べ替え、選択(抽出) NumPy配列ndarrayのスライスによる部分配列の選択と代入 Python, OpenCV, NumPyで画像のアルファブレンドとマスク処理 NumPy配列ndarrayを分割(split, array_split, hsplit, vsplit, dsplit) NumPyで条件に応じた処理を行うwhereの使い方 Pythonでメソッドチェーンを改行して書く NumPyのバージョンを確認(np.version) Pythonで正規化・標準化(リスト、NumPy配列、pandas.DataFrame) NumPy, randomで様々な種類の乱数の配列を生成 NumPyのarange, linspaceの使い方(連番や等差数列を生成)

Last Updated: 6/26/2019, 10:34:03 PM