में अजीब कनवर्टिंग सरणी मेरे पास एक फ्लोट की एक सरणी है जिसे मैंने सामान्यीकृत किया है (यानी सरणी में सबसे बड़ी संख्या 1 है), और मैं इसे ग्राफ के लिए रंग सूचकांक के रूप में उपयोग करना चाहता था। ग्रेस्केल का उपयोग करने के लिए matplotlib का उपयोग करने में, इसे 0 और 1 के बीच स्ट्रिंग का उपयोग करने की आवश्यकता होती है, इसलिए मैं स्ट्रिंग्स की सरणी में फ्लोट की सरणी को कन्वर्ट करना चाहता था। मैं "astype ('str')" का उपयोग करके ऐसा करने का प्रयास कर रहा था, लेकिन ऐसा लगता है कि यह कुछ मान बनाते हैं जो मूल के समान (या यहां तक कि करीब) नहीं हैं।फ्लोट से स्ट्रिंग्स
मुझे यह नोटिस है क्योंकि matplotlib सरणी में संख्या 8 खोजने के बारे में शिकायत करता है, जो अजीब है क्योंकि यह सामान्यीकृत था!
numpy.where(phis.astype('str').astype('float64') != phis)
गैर खाली है:
संक्षेप में, मैं ऐसा है कि एक सरणी float64 की phis, है,। यह (उम्मीदवार रूप से naively) के रूप में परेशान है, यह numpy में एक बग प्रतीत होता है, क्या ऐसा कुछ भी है जिससे मैं इसे गलत कर सकता था?
संपादित करें: जांच के बाद यह स्ट्रिंग फ़ंक्शन उच्च परिशुद्धता फ्लोट को संभालने के तरीके के कारण होता है। (Robbles से के रूप में जवाब देने के) एक vectorized toString समारोह का उपयोग करना, यह भी मामला है, लैम्ब्डा समारोह है लेकिन यदि:
lambda x: "%.2f" % x
तब रेखांकन काम करता है - कुरिओसेर और कुरिओसेर। (जाहिर है सरणियों लेकिन अब नहीं के बराबर हैं!)
तारों के numpy arrays का उपयोग करने का तर्क इसलिए था क्योंकि matplotlib को स्ट्रिंग्स के सही आकार के आकार की आवश्यकता होती है जो ग्रेस्केल का प्रतिनिधित्व करने के लिए 0 और 1 के बीच संख्याओं का प्रतिनिधित्व करती है (जो उस समय मैं चाहता था)।यह संख्याओं की सरणी को परिवर्तित करना सबसे आसान लग रहा था जो मेरे पास तारों की सरणी थी। मैं लंबाई जटिलता की उम्मीद नहीं कर रहा था। – VolatileStorm
इस स्थिति में भी सहायक: 1.) फ़ाइल 2 से डेटा पढ़ें।) मान लें कि सभी प्रविष्टियां 'फ्लोट' हैं, हालांकि, कुछ 'नान' हैं। 3.) यदि सभी फ्लोट के रूप में पढ़े जाते हैं, तो सूची में 'डबल 64' चर' होंगे जो 'नान 'के रूप में दिखाई देते हैं लेकिन उन्हें' numpy.nan' 'के रूप में पहचाना नहीं जाता है।) उनको बदलने के लिए, मैंने सफलतापूर्वक उपयोग किया : 'अगर वी [-1] .astype (' | S3 ') ==' नैन ': वी [-1] = numpy.nan' – Schorsch
आप np.genfromtxt का उपयोग कर सकते हैं और स्वचालित रूप से (अधिक या कम) से निपट सकते हैं। यदि आप उन्हें फ्लोट के रूप में उपयोग करना चाहते हैं तो फ़्लोट्स को तारों में परिवर्तित करना हमेशा एक बुरा विचार है। – Vincenzooo