Saya sedang mengerjakan sepotong kecil kode yang dimulai dengan permukaan interpolasi yang saya buat sebelumnya. Interpolasi mengisi celah di permukaan dengan nan. Bagian dari pemrosesan saya melibatkan melihat jendela lokal di sekitar titik tertentu, dan menghitung beberapa ukuran menggunakan permukaan lokal. Idealnya saya ingin kode ini hanya dapat melakukan perhitungan apa pun jika seluruh permukaan lokal tidak mengandung nilai nan. Kode melakukan iterasi melalui permukaan besar asli dan memeriksa apakah jendela lokal tentang suatu titik memiliki nan.
Saya tahu ini bukan cara yang paling efisien untuk melakukannya, efisiensi waktu bukanlah sesuatu yang harus saya khawatirkan.
Inilah yang saya miliki sejauh ini:
for in in range(startz,endx):
imin = i - half_tile
imax = i + half_tile +1
for j in range(starty,endy):
jmin = i - half_tile
jmax = i + half_tile +1
#Test the local surface for nan's
z = surface[imin:imax,jmin:jmax]
Test = np.isnan(sum(z))
#conditional statement
if Test:
print 'We have a nan'
#set measures I want to calculate to zero
else:
print 'We have a complete window'
#do a set of calculations
variabel surface
adalah permukaan interpolasi yang saya buat awalnya. Variabel half_tile
hanya menentukan ukuran jendela lokal yang ingin saya gunakan. startx,endx,starty,endy
menentukan ukuran permukaan asli yang akan dilalui.
Masalah yang saya alami adalah pernyataan kondisional saya sepertinya tidak berfungsi. Ini akan memberi tahu saya bahwa jendela lokal yang saya evaluasi tidak memiliki nan di dalamnya, tetapi kode saya yang lain (yang tidak saya tunjukkan di sini) tidak akan berfungsi karena dikatakan ada nan di dalam array.
Contohnya mungkin:
[[ 7.07494104 7.04592032 7.01689961 6.98787889 6.95885817 6.92983745
6.90081674 6.87179602 6.8427753 6.81375458 6.78473387 6.75571315
6.72669243]
[ 7.10077447 7.07175376 7.04273304 7.01371232 6.98469161 6.95567089
6.92665017 6.89762945 6.86860874 6.83958802 6.8105673 6.78154658
6.75252587]
[ 7.12660791 7.09758719 7.06856647 7.03954576 7.01052504 6.98150432
6.9524836 6.92346289 6.89444217 6.86542145 6.83640073 6.80738002
6.7783593 ]
[ 7.15244134 7.12342063 7.09439991 7.06537919 7.03635847 7.00733776
6.97831704 6.94929632 6.9202148 6.89105825 6.86190169 6.83274514
6.80358859]
[ 7.17804068 7.14888413 7.11972758 7.09057103 7.06141448 7.03225793
7.00310137 6.97394482 6.94478827 6.91563172 6.88647517 6.85731862
nan]]
Berikut adalah contoh jendela lokal yang dievaluasi oleh kode saya. Dalam kode saya ini akan menjadi z
. Seluruh array memiliki nilai bagus kecuali nilai terakhir yaitu nan
.
Fungsi "memeriksa" dalam kode saya tidak mengetahui bahwa ada nan di dalam array. Pernyataan kondisional mengembalikan false
padahal seharusnya true
untuk menunjukkan bahwa ada hadiah nan
. Saya kehilangan sesuatu yang mendasar dalam cara saya memeriksa array? atau apakah metodeku salah total?
np
disum
. Anda mungkin menggunakansum
bawaan, yang berperilaku berbeda darinumpy.sum
. - person user2357112 supports Monica   schedule 22.03.2017np.isnan(z).sum()
- person juanpa.arrivillaga   schedule 23.03.2017np.isnan(z).any()
mungkin lebih tepat. - person user2357112 supports Monica   schedule 23.03.2017