Help us understand the problem. What is going on with this article?

NumPyのデータ構造 - 多次元配列を作る

More than 1 year has passed since last update.

前回書いた 「NumPyでデータ作成を始める」 の続きのようなもの
データ作成方法にフォーカスして、色々な多次元配列の作成方法を見ていく

要素が全て同じの多次元配列

  • 要素が全て0の1次元配列
    image.png
    zerosで0が並ぶ、ones で1が並ぶ、なるほど
    でもこれ13とかなったらどうするんでしょう? さーてぃーんず はないでしょ

    ちゃんとありました
    image.png
    fullを使えばで引数で個数と値が指定できる!!
    ちなみに twos 以上はエラーになりましたw なんやねんw

  • 要素が全て0の2次元配列
    image.png
    行と列をタプルで渡せば2次元配列を作ってくれる

    同じくfullを使ってもできる
    image.png

  • おまけ: (100, 100, 100) の3次元配列
    もう作り方はわかる
    np.full((100, 100, 100))
    さてこれをpythonのfor文で作った場合
    [[[0 for _ in range(100)] for _ in range(100)] for _ in range(100)]
    わけわからんけど、こんな感じになる

    これらの実行速度、NumPyの方が十数倍速いみたい
    すげー

多次元配列の値の置き換え

zeros_likeones_likefull_likeを使えば、多次元配列の要素の値を全て指定した値に置き換えることができる
ただしshapeが同じ場合に限る!
image.png
np.full_like((2, 3), 99, dtype=int) で型指定もできちゃう
実際に使う場面に遭遇してみたい処理ではある

データ作成の主なメソッド

arange

pythonの range のnumpyバージョン
image.png
image.png
rangeと同じなので、スタートとストップ、ステップを指定して使える

linspace

スタートとストップと要素の個数を指定して、配列を生成
image.png
指定した個数が入りきるようにちゃんと割って入ってくれる
これ、数学Ⅱ(?)でやった等差数列やね!

eye

👀
eye(n)で 対角線上の値のみ1のn次元配列を作成(単位行列)
image.png
いや、むずいむずい
非正方行列じゃなくてもOKなんだったさ(要は雰囲気が正方形じゃないってことでしょう!)
image.png

diag

対角線上の値のみ指定し、他が0の配列
image.png
行数 = 引数の要素数
つまり正方形になるってことやん?

感想

なんとなるデータ作るの楽で速いのは感じてきている
いつか感動爆発するんかな〜

naka-j
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away