らふのプログラミングメモ

プログラミングメモです。

NumPyのndarray その4 空のndarrayを作ってみよう

今日は、空のndarrayを作ってみたいと思います。

方法としては、
- 配列内(ndarray)の全要素を指定の数値で埋めて作る場合
- 初期化されていない空の配列(ndarray)を作る場合

の2種類があります。

配列内の全要素を数値で埋めて作るとは?

全てに「0」や「1」や「任意の数」を埋めて配列を作る場合です。

例として、2行3列の2次元配列をつくってみましょう。

import numpy as np
#0をうめる:i_0
i_0 = np.zeros([2,3])
#1をうめる:i_1
i_1 = np.ones([2,3])
#任意の数(今回は5にしてみます):i_5
i_5 = np.full([2,3],5)

結果:
i_0 = [ [0., 0., 0.],[0., 0., 0.] ]
i_1 = [ [1., 1., 1.],[1., 1., 1.] ]
i_5 = [ [5., 5., 5.],[5., 5., 5.] ]

任意の数については、Nan(欠損値)を入れることもできます。

i_nan = np.full([2,3],np.nan)

結果:
i_nan = [ [nan, nan, nan],[nan, nan, nan] ]

初期化されていない空の配列を作るとは?

空っぽの配列を作ります。
ただし注意したければいけない点が1つ。
もともとメモリ内に入っているランダムな値(未初期化の値)が入っています。

実際にみてみましょう。

i_emp = np.empty([2,3])

結果:
i_emp = [ [1.e-323, 2.e-323, 3.e-323],[2.e-323, 4.e-323, 6.e-323] ]

型を指定することも可能です。

i_emp_type = np.empty([2,3],dtype = int)

結果:
i_emp_type = [ [ 2, 4, 6],[ 4, 8, 12] ]

 どうやって使い分ける?

それぞれのメリットデメリットをまとめてみよう。

メリット デメリット
zeros()
ones()
fill()
など
入力したいデータが欠落していてもわかりやすい 初期化するのに時間がかかる
empty() 初期化処理が入らないため処理が早く終わる 入力データに欠落があるとどれが欠落したデータなのかわからない

このように、取扱データによって使い分けたほうがよいと思われます。

<最終更新日:2021/09/09>
2021/09/09 投稿