numpy np.r_/np.c_の使い方
numpyのnp.r_とnp.c_が便利そうだったのでまとめます。
下の記事の内容まんまです。
多次元配列の結合を行うオブジェクトnp.c_とnp.r_の使い方 - DeepAge
配列を結合したい際、次元数が違う時がある。そこでnp.r_を使えばちがう次元でも結合可能。
数値の文字列で表すことができます(a, b, cはそれぞれ整数)。デフォルトでは'0, 0, -1'
となっています。
a
は、どの軸(axis)の方向に沿って配列を結合するのかを指定します。b
は、できあがる配列の次元数の最小値を指定します。c
は、次元数の少ない配列の次元数の拡張を行った際、形状(shape)の表記として、どこに配列の最後の次元が置かれるべきかを指定します。
c
については、例えば (2,3)
の形状(shape)を持つ二次元配列があったとします。この配列を他の(2,2,3)
の形状(shape)を持つ三次元配列と結合したいとします。このとき、二次元配列は三次元に拡張しなければ結合できません。
c=-1
またはc=1
であれば、先頭に1が追加され、(1, 2, 3)
の形状で結合することができます。c=0
であれば、元の配列の形状が先頭に詰められるので、(2,3,1)
となります。
上のリンクに書いてあったもの。np.r_に上の三種類の条件値を指定すれば結合の方法を指定できる。
それでnp.c_はこのうちa=-1,b=2,c=0を指定して入れる。
a=-1というのは最も低い次元のもとで結合していく。c=0は次元の違うものを結合させる際、末尾に1を追加するというもの。
ちなみにaxisとは座標軸のもの。行と列のみの行列なら列がaxis=0,行がaxis=1となる。
つまり、任意のx,yについてnp.gridmeshで行列をそろえ、np.ravel( )でリストにし、np.c_[ ]で結合すれば[x,y]の要素が入ったサイズが列数の行列を手に入れることができる。