Masalahnya terdiri dalam pemodelan propagasi sinyal (mis. Cahaya atau suara dll) melalui serangkaian hambatan, seperti pada gambar di bawah ini. Sinyal tidak dapat melewati permukaan bawah (medan), tetapi dapat melintasi rintangan. Saya ingin menghitung jumlah rintangan yang dilalui.
Medan dan hambatan ada dalam array numpy 2D (x, y, z). Inilah yang saya lakukan:
output = numpy.zeros(terrain.shape)
obstacles = terrain + obstacle_heights
for i in xrange (obstacles.shape[0]):
for j in xrange (obstacles.shape[1]):
mask = obstacles[i,j] > terrain[i,j:]
output[i,j:][mask] +=1
Hasilnya akan menjadi seperti [0, 0, 0, 1, 1, 1, 2, 3, 4, 4, 4 ...]
per baris.
Metode ini berfungsi dengan baik (asalkan lembah di terisi diisi dengan menggunakan numpy.maximum.accumulate
). Sekarang, apakah mungkin untuk mempercepatnya dengan menggunakan solusi vektor?