Bir dizim var ve 2x2 örtüşmeyen pencereleri tarayarak ve en yüksek değeri elde ederek daha küçük bir dizi oluşturmak istiyorum. Pencereli maksimum sayı
import numpy as np
np.random.seed(123)
np.set_printoptions(linewidth=1000,precision=3)
arr = np.random.uniform(-1,1,(4,4))
res = np.zeros((2,2))
for i in xrange(res.shape[0]):
for j in xrange(res.shape[1]):
ii = i*2
jj = j*2
res[i][j] = max(arr[ii][jj],arr[ii+1][jj],arr[ii][jj+1],arr[ii+1][jj+1])
print arr
print res
Yani böyle bir matris
:[[ 0.393 -0.428 -0.546 0.103]
[ 0.439 -0.154 0.962 0.37 ]
[-0.038 -0.216 -0.314 0.458]
[-0.123 -0.881 -0.204 0.476]]
bu duruma düşerse
: İşte bir örnek[[ 0.439 0.962]
[-0.038 0.476]]
nasıl daha verimli yapabilirim?
Bize neyi denediğinizi ve neden çalışmadığını gösterebilir misiniz? –
Yukarıdaki kod gerekli işi yapıyor, ancak bu hızlı olması gerekiyor ve bu nedenle for döngüsü kaldırmak istiyorum –
[NumBa] (http://numba.pydata.org/) kullanarak düşünün. Çift döngüsünü olduğu gibi bırakabilir, bir dekoratörde yaklaşık 10 karakter ekleyebilir ve bunun için C benzeri performans elde edebilirsiniz. Continuum Analytics'in ["Anaconda"] (https://store.continuum.io/cshop/anaconda/) Python dağıtımı ile çalışıyorsanız, kutudan çıkması kolay. – ely