Numpy配列の分割するのに基本となるのがnumpy.split関数です.その他にも分割するための関数がありますが,numpy.split関数から引数を固定して使いやすくしたものです.基本となるnumpy.split関数を最初に解説した後で他の関数を紹介します.
スポンサーリンク
numpy.split関数で配列を分割
配列を分割するのに基本となるnumpy.split関数について解説をしていきます.
・2行2列の2次元配列を2分割する
[IN]
import numpy as np
a = np.arange(16).reshape(4,4)
print("a \n", a)
a_1, a_2 = np.split(a, 2) #
print("a_1 \n", a_1)
print("a_2 \n", a_2)
[OUT]
a
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
a_1
[[0 1 2 3]
[4 5 6 7]]
a_2
[[ 8 9 10 11]
[12 13 14 15]]
第二引数にインデックスを渡すことで,分割位置を指定できます.
・第二引数にインデックス番号[1,3]を渡して,a行列の1行目と3行目を分割します.
[IN]
import numpy as np
a = np.arange(16).reshape(4,4)
print("a \n", a)
a1, a2, a3 = np.split(a,[1,3] ) #分割位置を指定
print("a1 \n", a1)
print("a2 \n", a2)
print("a3 \n", a3)
[OUT]
a
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
a1
[[0 1 2 3]]
a2
[[ 4 5 6 7]
[ 8 9 10 11]]
a3
[[12 13 14 15]]
numpy.array_split関数で,できるだけ均等に分割
numpy.array_split関数は配列を指定した数に均等に分割を試みますが,配列が割り切れない場合は,分割後の配列数がn+1とnのものを作成して配列を分割します.
・要素数が10の配列を3分割します.
[IN]
import numpy as np
a = np.arange(8).reshape(2,4)
print("a \n", a )
a1, a2 ,a3 =np.array_split(a, 3,axis=1)
print("a1 \n",a1)
print("a2 \n",a2)
print("a3 \n",a3)
[OUT]
a
[[0 1 2 3]
[4 5 6 7]]
a1
[[0 1]
[4 5]]
a2
[[2]
[6]]
a3
[[3]
[7]]
a1が2列で残りの配列が1列で作成できました.
numpy.vsplit関数で配列の行を分割
numpy.vsplit関数で配列を行方向に分割します.
・vsplit関数で4行4列の配列を行方向に2分割
[IN]
import numpy as np
a = np.arange(16).reshape(4,4)
print("a \n", a )
a1, a2 =np.vsplit(a, 2)
print("a1 \n",a1)
print("a2 \n",a2)
[OUT]
a
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
a1
[[0 1 2 3]
[4 5 6 7]]
a2
[[ 8 9 10 11]
[12 13 14 15]]
numpy.hsplit関数で列を分割
numpy.hsplit関数で配列の列を分割します.
・hsplit関数で4行4列の配列を列方向に2分割
[IN]
import numpy as np
a = np.arange(16).reshape(4,4)
print("a \n", a )
a1, a2 =np.hsplit(a, 2)
print("a1 \n",a1)
print("a2 \n",a2)
[OUT]
a
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
a1
[[ 0 1]
[ 4 5]
[ 8 9]
[12 13]]
a2
[[ 2 3]
[ 6 7]
[10 11]
[14 15]]
・Python記事一覧
スポンサーリンク
コメント