LoginSignup
9
7

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-07-27

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.]]]
9
7
0

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
9
7