2016-08-12 18 views
1

2次元と3次元がopenCVを使って表示したいグレースケール画像である、3D numpy配列(1L、420L、580L)を持っています。 2D配列を3D配列からどのように引き出すのですか?Python:3D配列から2D配列を抽出します。

私はこれを行うための短いルーチンを作成しましたが、より良い方法があると思います。

# helper function to remove 1st dimension 
def pull_image(in_array): 

    rows = in_array.shape[1] # vertical 
    cols = in_array.shape[2] # horizontal 

    out_array = np.zeros((rows, cols), np.uint8) # create new array to hold image data 

    for r in xrange(rows): 
     for c in xrange(cols):    
      out_array[r, c] = in_array[:, r, c] 
    return out_array 
+1

'np.squeeze'を使用してください。または、最初の要素を抽出して、余分なシングルトン・ディメンションを失います。 – Divakar

答えて

1

あなたは常にだけにしてあなたは、単に、アレイを再構築することができ、最初の次元== 1を持っている場合は...

if in_array.shape[0] == 1: 
    return in_array.reshape(in_array.shape[1:]) 

そうでない場合、あなたがnumpyのの高度なリストのスライスを使用することができます...

else: 
    return in_array[0,:,:] 
関連する問題