レッスン3 / 4問目

『full, empty』

このッスンでは配列生成メソッドであるfullとemptyについて学習します。

メソッド 説明
full((x, y), 指定要素) 指定した要素でx行y列の配列を生成
empty((x, y)) 要素を初期化せずにx行y列の配列を生成

ではnp.full()からみていきましょう。

  1. arr = np.full((2, 3), 10)
  2. print(arr)
[[10, 10, 10], [10, 10, 10]])

上記の例では指定要素10で2行3列の配列を生成しています。

続いてemptyについて見ていきましょう。

emptyは要素を初期化しないため高速に動作するという特徴があります。ちなみに要素を初期化しないとはどういうことかというとメモリ上に配列の領域のみを確保し、値は初期化しないということです。そのため値は0となるかもしくはたまたまメモリ上に残っているてきとうな値が入ります。

  1. arr = np.empty((3, 2))
  2. print(arr)
[[4.66666269e-310, 0.00000000e+000], [0.00000000e+000, 0.00000000e+000], [0.00000000e+000, 0.00000000e+000]]

形状をタプルで渡すという基本的な使い方はzerosやonesと同じですが、上述したようにemptyは値を初期化しないため動作が非常に高速です。以下はempty, zeros, ones, full の実行速度を比べたグラフです

配列メソッドの速度を比較したグラフ

このようにemptyが圧倒的に速度が速いことがわかります。そのため特に要素を指定する必要がない場合などはemptyを使うとよいでしょう。

では早速レッスンにチャレンジしてみましょう。

Lesson1

以下の配列を生成しarr1に格納し出力してください。

[[5 5] [5 5] [5 5]]

Lesson2

emptyを用いて4行2列の配列を生成しarr2に格納し出力してください。


本レッスンでは変数に格納された値を判定します。

※ emptyの出力は解答と一致する必要はありません。

Last updated:2019/11/7

[[5 5]
 [5 5]
 [5 5]]
[[6.91669098e-310 6.91669098e-310]
 [0.00000000e+000 0.00000000e+000]
 [0.00000000e+000 0.00000000e+000]
 [3.21142670e-322 1.63041663e-322]]
  1. import numpy as np

  2. # 指定した配列を生成しarr1に格納し出力してください。

  3. arr1 = np.full((3, 2), 5)
  4. print(arr1)

  5. # emptyを用いて4行2列の配列を生成しarr2に格納し出力してください。

  6. arr2 = np.empty((4, 2))
  7. print(arr2)
main.py
設定
g
n
i
d
a
o
L