Çözmem gereken bir problemim var ve iyi bir çözüm bulamıyorum.python numpy dizileri. Birden çok diziyi verimli bir şekilde nasıl kesilir?
Aşağılamak için 10x10'luk bir dizi var ve 3x3'ün "küçük dizileri" ni dilimlemek istiyorum.
array = np.arange(100).reshape((10,10))
patch = np.array(array[:3, :3]
for n in range(3, 10, 3):
for m in range(3, 10, 3):
patch = numpy.append(patch, array[n:n+3, m:m+3]
i temelde birinci dilim numpy dizi yama oluşturmak ve daha sonra diğer tüm dilimleri ekleyin: Şu anda ben bu şu şekilde yapmak. Bununla ilgili problem, korkunç bir şekilde yavaş olması ve dilbilgisel dilimleme fırsatlarının iyi bir şekilde kullanılmamasıdır. Çok daha büyük diziler için bunu yapmalıyım. Bunu nasıl daha verimli hale getirebileceğimi öneren var mı? 1000 teşekkürler!
niçin 'yama' ekleniyor? Eğer yama bir dilim ise, yani patch = array [n: n + 3, m: m + 3] ',' patch'de değiştirilen herhangi bir değer 'array'de değiştirilecektir. Bu bir hafıza sorunu ise, [dask] (http://dask.pydata.org/en/latest/) –
'u aramanızı öneririz ve cevabınız için teşekkür ederiz. Sonunda sahip olmak istediğim bir Büyük dizi dizisinde olası her 3x3 dilimi içeren dizi (yama). doğru boyutları (işimde daha fazla boyutlu diziler kullanıyorum) almak ve daha sonra tüm diğer dilimleri eklemek için bir giriş (dilim 1) ile dizi oluşturma çirkin bir şekilde bunu yapıyorum. Yaptığım şekilde sen de diziyi değiştirir misin? Bunu yapmak istemiyorum, dizi – idontknow
yamasından bağımsız olmalıyım. Hala diziyi parçalara bölmek için neden görmedim, ya da diziyi değiştirmenin yamuk olmasının nedeni bu sorunun nedenidir. Ayrıca, ekseni ayarlama ekseni kullanarak 2d dizinizi 1d'ye çeviriyorum. Basit bir örnekle ne yapmak istediğinizi göstermeye çalışabilir misiniz? –