2016-07-01 9 views
1

は私がndarrayを持っていることを考えてみましょうunnededメンバーをフィルタリングすることによりndarrayを再構築:私はこの配列の各メンバーの上に行くと、私はしたくないものをフィルタリングしたいnumpyのは - インクリメンタル

all_data.shape 
(220000, 28, 28) 

type(all_data) 
numpy.ndarray 

。その結果、まったく同じ形の新しいndarrayを取得したい。以下のような

何か:

#save first image and its label in separate array 
#we will store unique values 
sanitized_data = all_data[0] 
sanitized_labels = all_labels[0] 
#lets illimnate dupes 
#store of existing hashes 
hashes = set() 
#go over each image 
for i in range(0,len(all_labels)): 
    #check if its hash is in list hashes 
    if not md5(all_data[i]).hexdigest() in hashes: 
     #record its hash and copy to new dataset 
     sanitized_data = np.stack((sanitized_data, all_data[i])) 
     sanitized_labels = np.stack((sanitized_labels, all_labels[i]))  
     hashes.add(md5(all_data[i]).hexdigest()) 

しかし、私は得る:

ValueError: all input arrays must have the same shape 

私はこれを適切に行う方法がわからないです。私は増分的に最初の軸に沿って新しい配列を追加したいと思います。 numpyでこれを正しく行う方法がわからないのですか?私はそれのためのdstackアクションをGoogleで検索しましたが、それは間違った軸に沿ってものを積み重ねているようです。コメントからコピー

+0

「フィルターアウト」とはどういう意味ですか? 0に設定するか、削除してください。要素を削除すると、同じ形状を保持することはできません。 – hpaulj

+0

Pythonセッションでnumpyをプルアップし、さまざまな形状の小さな配列を作成し、異なる軸に沿ってそれらを連結して練習することをお勧めします。 'np.concatenate'は基本的な動作です。 'hstack'、' dstack'などは、次元を調整して軸を連結するだけです。暗闇の中で遭遇しないでください。小さくて観察可能なもので練習してください。 – hpaulj

+1

リストにコンポーネント配列を累積し、リスト全体に 'concatenate'を一度適用する方が良いでしょう。また、あなたが進むにつれて寸法をチェックする習慣を身につけてください。 – hpaulj

答えて

1

リスト内のコンポーネントアレイを蓄積し、リスト全体を一度concatenateを適用した方がよいです。また、あなたが進むにつれて寸法をチェックする習慣を身につけてください。

@hpaulj最後の提案がうまくいきました。ありがとう!

関連する問題