2016-02-09 24 views
5

Yukarıdaki yanlış (aşağıdaki yorumda belirtildiği gibi). Bunu yapmanın doğru ve hızlı yolu nedir?Numpy dizisi bazı öğeleri hariç tutar

Benim validation_images sadece

validation_images = images[::6] 

ve görüntülerin şekli (60000, 784) 'dir. Bu sayısal bir dizindir.

Geçerli yöntem çok yavaş olduğu için kabul edilemez. Hep böyle şeyler için boolean masks kullanıyorum

+0

Not: ['in' diziler için anlamsızdır) (http://stackoverflow.com/questions/18320624/how-does-contains-work-for-ndarrays), bu nedenle geçerli kodunuz muhtemelen yapmıyor neyse ne istiyorsun? Ayrıca, bu çiftler tarafından nasıl etkilenmeli? Yalnızca indeksi 6 kattan oluşan her satırı bırakmak istiyor musunuz? – user2357112

+0

Bunu bilmiyordum. Ama neyse, orada yapmak istediğimi yapmak istiyorum. Evet, kopyaları umursamıyorum, sadece doğrulama satırlarım için her 6 satıra bir satır bırakmak istiyorum. –

cevap

4

, size düşünebiliriz: numpy diziler üzerinde

validation_images = images[~mask] 

matematiksel işlemler:

# Mask every sixth row 
mask = (np.arange(images.shape[0]) % 6) != 0 

# Only use the not masked images 
training_images = images[mask] 

doğrulama kümesi sonra her maskeli eleman olurdu iş öğesi bilge, bu nedenle her öğeye modulo (%) uygulanacak ve aynı şekle sahip başka bir dizi döndürecektir. != 0 aynı zamanda eleman olarak çalışır ve modulo sıfır değilse karşılaştırır. Yani maske sadece False içeren bir dizidir, burada değer bir int * 6 ve True olduğu yerde değildir.

+0

np.arange (images.shape [0]) size bir dizi verir, neden yapabiliyorsunuz (THIS% 6)! = 0? Orada ne yapıyorsun ve neden çalışıyor? Bunu açıklayabilir misin? –

+0

Ve bu işe yarıyor gibi görünüyor! –

+0

Sonunda işlemlerin içeriğini açıklayan küçük bir metin düzenledim. – MSeifert

İlgili konular