İki boyutlu bir Python numpy dizisine dönüştürdüğüm benzersiz ID yamaları/bölgeleri içeren bir rasterim var. Ben için çift yönlü hesaplamak istiyorum Tüm raster yamanın en yakın kenarlarını ayıran minimum mesafeyi elde etmek için arasındaki tüm bölgeler arasındaki Öklid uzaklıkları. Dizi başlangıçta bir raster olduğundan, bir çözüm hücreler arası çapraz mesafeleri hesaba katmak zorundadır (raster çözünürlüğü ile çarparak her zaman hücrelerde ölçülen mesafeleri metreye geri dönüştürebilirim).Benzersiz Python dizi bölgeleri arasındaki mesafelerin hesaplanması?
this answer to a related question önerildiği gibi scipy.spatial.distance
den cdist
fonksiyonu ile denediği, ama şu ana kadar mevcut belgeleri kullanarak benim sorunu çözmek yapamaz oldum. Bir sonuç olarak ideal olarak, tüm olası bölge kombinasyonları arasındaki mesafeler dahil olmak üzere "ID'den ID'ye, mesafe" biçiminde bir 3'e X dizisine sahip olacağım. Bu tamsayı varsayar
import numpy as np
import matplotlib.pyplot as plt
# Sample study area array
example_array = np.array([[0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 2, 0, 2, 2, 0, 6, 0, 3, 3, 3],
[0, 0, 0, 0, 2, 2, 0, 0, 0, 3, 3, 3],
[0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3],
[1, 1, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3],
[1, 1, 1, 0, 0, 0, 3, 3, 3, 0, 0, 3],
[1, 1, 1, 0, 0, 0, 3, 3, 3, 0, 0, 0],
[1, 1, 1, 0, 0, 0, 3, 3, 3, 0, 0, 0],
[1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[1, 0, 1, 0, 0, 0, 0, 5, 5, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4]])
# Plot array
plt.imshow(example_array, cmap="spectral", interpolation='nearest')
Örnek çıktı sağlar mısınız? –
Aşırı bir şekilde diziden geçmeden, ilk birkaç sonuçtan oluşan bir örnek, bu gibi bir şeye benzeyecektir (http://i.imgur.com/HE7YTmG.jpg?1). "bölge, bölgeye" ikinci "ve üçüncü" mesafe "sütununa. Belirli sonuçlar elbette mesafeleri hesaplamak için kullanılan algoritmaya bağlı olarak değişebilirdi, ama o top sahasında bir şey peşindeyim. –