Numarayı NaN ile değiştirip numpy.nan_to_num gibi bir işlevi arıyorum, tersi hariç.Numpy - Sayıyı NaN ile değiştirin
Her biri benzersiz bir NoDataValue tanımlayabildiğinden, farklı diziler işlendikçe sayı değişebilir. Sözlükleri kullanan insanları görüyorum, ancak diziler geniş ve hem pozitif hem de negatif floatlarla dolu. Anahtarlar oluşturmak için bunların tümünü bir şeye yüklemenin etkili olmadığından şüpheleniyorum.
Herhangi birini() veya tümünü() kullandığımı gerektiren aşağıdaki ve uyuşuklukları kullanmayı denedim. Öğeyi bilge bir şekilde yinelemem gerektiğini anlıyorum, ancak yerleşik bir işlevin bunu başarabileceğini umuyorum.
def replaceNoData(scanBlock, NDV):
for n, i in enumerate(array):
if i == NDV:
scanBlock[n] = numpy.nan
NDV, GDAL'nin veri değeri değildir ve dizi bir sayı dizisidir.
Maskelenmiş bir dizilim belki de gitmenin yolu mu?
için bir endeks olarak kullanılabilecek bir boolean dizisi üretecek. Düzgün çalışmıyor mu? –
@Chris Gregg Bu çözümün bir miktar girintiye ihtiyacı var, diziyi döndürmesi gerekmiyor (yerinde olduğu için), muhtemelen np.array ile karışıklıktan kaçınmak için 'array' değişkenini kullanmaktan kaçınmalı, ama en önemlisi korkunç olacak Tipik numpy indeksleme ve yayın ile karşılaştırıldığında yavaş. – Paul
@Paul Benim endişem hız oldu, aşağıdaki cevap için çok teşekkürler. Kodları daha net yapmak için değişkenleri kullandım, diziyi kullanmaktan kaçınmak istiyorum. – Jzl5325