Numpy配列を分割する方法

Numpy

 Numpy配列の分割するのに基本となるのがnumpy.split関数です.その他にも分割するための関数がありますが,numpy.split関数から引数を固定して使いやすくしたものです.基本となるnumpy.split関数を最初に解説した後で他の関数を紹介します.

 スポンサーリンク

スポンサーリンク

numpy.split関数で配列を分割

配列を分割するのに基本となるnumpy.split関数について解説をしていきます.

numpy.split関数の書式

numpy.split(ary、indexes_or_sections、axis = 0 )

引数効果
ary配列(ndarray)
indexs_or_sectionsint分割数または分割位置を指定する
axis分割する軸,デフォルトaxis=0
2行2列の2次元配列では
axis=0 行の分割
axis=1 列の分割

・分割後の配列が全て同じ要素である必要があります.

・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のものを作成して配列を分割します.

numpy.array_split関数の書式

numpy.array_split(ary, indices_or_sections, axis=0)

引数効果
ary配列(ndarray)
indexs_or_sectionsint分割数または分割位置を指定する
axis分割する軸,デフォルトaxis=0
2行2列の2次元配列では
axis=0 行の分割
axis=1 列の分割

・要素数が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関数で配列を行方向に分割します.

numpy.vsplit関数の書式

numpy.vsplit(arr,indices_or_sections)

引数効果
ary配列(ndarray)
indexs_or_sectionsint行方向の分割数または分割位置を指定する.

numpy.split関数の第三引数axis=0と同じ働き.

・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関数で配列の列を分割します.

numpy.hsplit関数の書式

numpy.hsplit(arr,indices_or_sections)

引数効果
ary配列(ndarray)
indexs_or_sectionsint列方向の分割数または分割位置を指定する.

numpy.split関数の第三引数axis=1と同じ働き.

・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記事一覧

トップページへ戻る

 スポンサーリンク

コメント

タイトルとURLをコピーしました