PySAL Numpy सरणी से प्राकृतिक टूटता है


11

मैं पायथन का उपयोग करके एक रैस्टर से प्राकृतिक ब्रेक वैल्यू निकालने का प्रयास कर रहा हूं।

इच्छित प्रक्रिया इस प्रकार है: प्राकृतिक विराम मूल्यों ( प्यर्सल नेचुरल ब्रेक्स फंक्शन का उपयोग करके) के लिए न्युपी ऐरे ( RasterToNumPyArray का उपयोग करते हुए ) के लिए आर्ची रैस्टर ऑब्जेक्ट

import arcpy, pysal
from pysal.esda.mapclassify import Natural_Breaks as nb
# code to create greenIndex arcpy Raster object here
greenArray = arcpy.RasterToNumPyArray(greenIndex)
breaks = nb(greenArray,k=2,initial=20)

यह कोड त्रुटि देता है, "ValueError: मैट्रिक्स 2-आयामी होना चाहिए"।

जहाँ तक मुझे पता है, ग्रीनअरे 2-आयामी सरणी है।


1
क्या आपने Natural_Breaks के साथ प्रक्रिया करने से पहले ग्रीनअरे आयामों की जाँच करने की कोशिश की है? सरणी पर कॉल .shape की तरह लग रहा है आप सरणी आयाम दे देंगे। मैंने इससे पहले ऐसा नहीं किया है, लेकिन यह पोस्ट मददगार लगती है ... stackoverflow.com/questions/3061761/numpy-array-dimensions
Branco

1
धन्यवाद, ब्रांको। मैं उस धागे के पार आया, जो मुझे विश्वास दिलाता है कि मेरी सरणी 2-आयामी थी। GreenArray.shape = (1536,2048) की वापसी, और greenArray.ndim = 2. मुझे लगता है कि मैं एक समाधान (numpy.ravel () का उपयोग करके) के साथ आया हूं, जिसे मैं जल्द ही लिखूंगा।
फ्लोएम

1
@ पाओलो पायलस डोको को देखते हुए मुझे लगता है कि आप उपयोग करने के साथ सही हैं flattenऔर ravel; Natural_Breaksमानों के केवल एक 1d वेक्टर (या, एक को स्वीकार करने के लिए प्रकट होता है (n, 1)वेक्टर)।
om_henners

जवाबों:


6

मदद के लिए धन्यवाद, Branco और om_henners।

मेरी समस्या का उत्तर यह प्रतीत होता है कि numpy.ravel () का उपयोग करके चाप को बनाया जा सकता है।

import arcpy, pysal
from pysal.esda.mapclassify import Natural_Breaks as nb
# code to create greenIndex arcpy Raster object here
greenArray = arcpy.RasterToNumPyArray(greenIndex)
breaks = nb(greenArray.ravel(),k=2,initial=20)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.