मैं numpy.genfromtxt का उपयोग कर एक फ़ाइल में पढ़ रहा हूं जो दोनों स्ट्रिंग्स और न्यूमेरिक मानों के कॉलम लाता है। एक चीज जो मुझे करने की ज़रूरत है वह इनपुट की लंबाई का पता लगाती है। यह सब ठीक है बशर्ते प्रत्येक सरणी में एक से अधिक मान पढ़े जाएं।केवल एक तत्व के साथ एक numpy सरणी की लंबाई का पता लगाने के लिए कैसे?
लेकिन ... यदि परिणामस्वरूप सरणी में केवल एक तत्व है, तो तर्क विफल हो जाता है। मैं एक उदाहरण यहां पुन: कर सकते हैं:
import numpy as np
a = np.array(2.3)
लेन (क) यह बताने वाला त्रुटि देता है:
TypeError: len() of unsized object
हालांकि, अगर एक 2 या अधिक तत्वों, लेन() के रूप में एक उम्मीद होती है व्यवहार करता है।
import numpy as np
a = np.array([2.3,3.6])
लेन (क) यहाँ रिटर्न 2
मेरी चिंता का विषय है, अगर मैं कुछ अजीब अपवाद हैंडलिंग का उपयोग, मैं एक खाली और एक होने लंबाई होने के बीच भेद नहीं कर सकते = 1.
संपादित करें: @noskio ने एक = np.array ([2.3]) सेट करने का सुझाव दिया। समस्या यह है कि, numpy.genfromtxt का उपयोग करके वास्तविक उत्पत्ति है। कोड इस तरह दिखता है:,
import numpy as np
indata = np.genfromtxt(some_filename, names=True,dtype=None)
a = indata['one_col_headername']
नतीजतन अगर indata फ़ाइल में केवल एक पंक्ति, एक 0-डी सरणी है।
'सरणी ([2])' एक तत्व और 1 आयाम के साथ एक सरणी है । 'सरणी (2)' शून्य रैंक या शून्य आयाम वाला सरणी है। – endolith