2017-11-06 4 views
0

私はこのサイトでいくつかの検索をしましたが、似たような質問はありません(または私の説明は検索するにはあまりにも悪いです)。numpyの高次元のアイテムをどのようにインデックスするのですか?

私はnumpyで多次元のndarrayからいくつかのndarrayを取得する必要があるという問題に直面しています。

は、私はCNNで畳み込み層に8つの2x2x3フィルタを表し

W = np.random.randn(2,2,3,8) 

があるとします。

私はcが範囲に0である

print(W.shape) 
print(W[:,:,:,:c].shape) 
print(W[:,:,:,:c]) 
print(W[:,:,:,:c].flatten()) 

しようとしたW.

の最初の2x2x3である第一のフィルタ、アクセスしたい - 返された結果が常に

です7.
(2, 2, 3, 8) 
(2, 2, 3, 0) 
[] 
[] 

しかし、私は上記の索引付けによる2x2x3フィルターの結果を期待しています。

コードの4行...上記

複製:

W = np.random.randn(2,2,3,8) 
for c in range(0, 8): 
# print(W.shape) 
    print(W[:,:,:,:c].shape) 
# print(W[:,:,:,:c]) 
# print(W[:,:,:,:c].flatten()) 

結果は:私は実際に期待

(2, 2, 3, 0) 
(2, 2, 3, 1) 
(2, 2, 3, 2) 
(2, 2, 3, 3) 
(2, 2, 3, 4) 
(2, 2, 3, 5) 
(2, 2, 3, 6) 
(2, 2, 3, 7) 

8(2、2、3)。 助けてください!

+1

試してください: 'W [...、0]'。 – Divakar

+0

A HERO @Divakar – Kulbear

+0

@Divakarなぜ私の方法が答えで機能しないのか説明してください。もし時間があれば...ありがとうございます – Kulbear

答えて

1

あなたは基本的に、W[:,:,:,0]はようにあなたの最初のフィルタであり、W

import numpy as np 

W = np.random.randn(2,2,3,8) 
for c in range(0, 8): 
    print(W[:,:,:,c].shape) 
    print(W[:,:,:,c]) 

をスライスして、あなたのフィルタにアクセスすることができます。

関連する問題