में एक numpy सरणी में हैं या नहीं, मैं यह जांचना चाहता हूं कि एक NumPyArray में सेट में मौजूद मान हैं, और यदि ऐसा है तो उस क्षेत्र को सरणी में सेट करें = 1. यदि कोई KeepRaster सेट नहीं है = 2.जांचें कि सेट में मान पाइथन
numpyArray = #some imported array
repeatSet= ([3, 5, 6, 8])
confusedRaster = numpyArray[numpy.where(numpyArray in repeatSet)]= 1
पैदावार:
<type 'exceptions.TypeError'>: unhashable type: 'numpy.ndarray'
इसमें लूप करने के लिए कोई तरीका है?
for numpyArray
if numpyArray in repeatSet
confusedRaster = 1
else
keepRaster = 2
स्पष्ट और थोड़ा आगे मदद के लिए पूछना करने के लिए:
क्या मैं, पर पाने के लिए कोशिश कर रहा हूँ, और वर्तमान में कर रहा हूँ एक सरणी में एक रेखापुंज इनपुट रहा है। मुझे 2-डी सरणी में मान पढ़ने और उन मानों के आधार पर एक और सरणी बनाने की आवश्यकता है। यदि सरणी मान एक सेट में है तो मान 1 होगा। यदि यह किसी सेट में नहीं है तो मान किसी अन्य इनपुट से लिया जाएगा, लेकिन अब मैं 77 कहूंगा। यह वही है जो मैं वर्तमान में उपयोग कर रहा हूं। मेरे परीक्षण इनपुट में लगभग 1500 पंक्तियां और 3500 कॉलम हैं। यह हमेशा पंक्ति के आसपास स्थिर हो 350.
for rowd in range(0, width):
for cold in range (0, height):
if numpyarray.item(rowd,cold) in repeatSet:
confusedArray[rowd][cold] = 1
else:
if numpyarray.item(rowd,cold) == 0:
confusedArray[rowd][cold] = 0
else:
confusedArray[rowd][cold] = 2
हम्म, के रूप में तो मैं वह समझलो। यदि परीक्षण मूल्य सत्य की तुलना में राज्य सूची में है, जो = 1 होगा, अन्यथा यह वही होगा जो यह था। आउटपुट सरणी ([1,0,1,0,0]) – mkmitchell
@mkmitchell बनाने के लिए कोई तरीका है, हाँ, आपको मिल गया। यह सामान्य पाइथन सूचियों के साथ टुकड़ा असाइनमेंट के समान कुछ है, लेकिन ए) numpy की अधिक जटिल अनुक्रमण प्रणाली का उपयोग करता है, और बी) संख्यात्मक सम्मेलन का पालन करता है जो किसी सरणी के टुकड़े को स्केलर निर्दिष्ट करता है, उस स्कालर मान पर स्लाइस में सभी मान निर्दिष्ट करता है। – senderle
अगर यह 2-डी सरणी है तो कैसे? – mkmitchell