1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

numpyの学び(配列の中に配列を)

Last updated at Posted at 2021-12-07

はじめに

「numpyでそんなことができたのか。。。」
ある日バイト中に社員の方からコードを見てもらってるときに教えてもらったことが、僕の中であまりにも感動してしまったので、思わず記事にしてしまいました。
研究でしかpythonを使わず、numpyもそんなに使ってないとはいえ、少しは使えるようになってるかなと思ってた矢先の出来事でした。
python playerの人は知ってる方も多いかもしれませんが、興味本位で見てくだされば幸いです。

np.zeros

np.zerosとかnp.onesとかnp.emptyで初期化した配列を作れるのは、周知の事実ですがサイトとかみると
1次元配列・2次元配列でしか紹介されてないですよね。
こんな感じです。↓

.py
import numpy as np
a = np.ones(5) #要素が5個の一次元配列
b = np.ones((4, 5)) #4×5の2次元配列

それでは、配列の中に配列を入れる場合にはどのように初期化するのでしょうか?
例えば、2次元配列の要素に2次元の要素を入れたいときとかです。(この場合は次元的には3次元になります。)
こんな感じの配列です。↓

.py
[[[1,1],
 [2,2]],

 [[3,3],
 [4,4]]]

では、解法と行きましょう。(出力結果が見やすいように、小さい配列にしてます)

.py
array = np.zeros((2, 2, 4, 4), order="C")

出力結果(この場合には次元は4次元になります。)

.py
array([[[[0., 0., 0., 0.],
         [0., 0., 0., 0.],
         [0., 0., 0., 0.],
         [0., 0., 0., 0.]],

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


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

        [[0., 0., 0., 0.],
         [0., 0., 0., 0.],
         [0., 0., 0., 0.],
         [0., 0., 0., 0.]]]])

無事2×2の配列の要素に4×4の配列を定義することができました!
ちなみに、np.zerosよりnp.emptyの方が処理速度は早いです。

終わりに

今回はnumpyの感動した出来事をまとめてみました。
「numpy...貴様そんなことができたのか!」
と僕の知識のなさをnumpyのせいにして終わりにしたいと思います。
誰かのお役に立てれば幸いです。

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?