BETA

Numpyのndarray同士の結合方向について

投稿日:2018-11-13
最終更新:2018-11-13

Numpyというpythonの数値計算ライブラリを最近よく使っています。 ndarrayというN次元配列型が定義されていて便利です。 さて、複数の配列を結合させたい場合、Numpyには以下のようなメソッドが用意されています。 numpy.r- : 行方向への結合 numpy.c_ : 列方向への結合

import numpy as np
a = np.ones((2, 3)) # 2×3で要素が全て1の行列
b = np.zeros((2, 3)) # 2×3で要素が全て0の行列
c = np.r_[a, b]
d = np.c_[a, b]
print(c)
print(d)

>[[ 1.  1.  1.]
 [ 1.  1.  1.]
 [ 0.  0.  0.]
 [ 0.  0.  0.]]
>[[ 1.  1.  1.  0.  0.  0.]
 [ 1.  1.  1.  0.  0.  0.]]

結合したいndarrayを[]で囲んでメソッドを使うと、 こんな感じでそれぞれの方向に行列を結合してくれます 参考: Numpyで行列の連結 これを使うと、2つのN×M配列から2N×MとN×2Mの2次元配列を作ることができます。

ではN×M×2のような3次元配列は作れないのかという話になるのですが、 見た限りそれ用のメソッドは用意されてないっぽいです。 以下のように配列生成関数numpy.array()にndarrayを要素に持つタプルを与えることで実現はできます。

e = np.array((a, b))
print(e)

>[[[ 1.  1.  1.]
  [ 1.  1.  1.]]

 [[ 0.  0.  0.]
  [ 0.  0.  0.]]]
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@kiyoの技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう