生命系学生のゲノム解析覚え書き

大抵インフォ、時々バイオ、稀にアグリな日記

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]の要素が入ったサイズが列数の行列を手に入れることができる。