मैं numpy
की एक अनुभवी उपयोगकर्ता नहीं हूँ, लेकिन यहाँ के लिए एक संभव समाधान है सामान्य प्रश्न:
>>> i = iter([(1, 11), (2, 22)])
>>> i
<listiterator at 0x5b2de30> # a sample iterable of tuples
>>> rec_array = np.fromiter(i, dtype='i4,i4') # mind the dtype
>>> rec_array # rec_array is a record array
array([(1, 11), (2, 22)],
dtype=[('f0', '<i4'), ('f1', '<i4')])
>>> rec_array['f0'], rec_array[0] # each field has a default name
(array([1, 2]), (1, 11))
>>> a = rec_array.view(np.int32).reshape(-1,2) # let's create a view
>>> a
array([[ 1, 11],
[ 2, 22]])
>>> rec_array[0][1] = 23
>>> a # a is a view, not a copy!
array([[ 1, 23],
[ 2, 22]])
मुझे लगता है कि सभी कॉलम एक ही प्रकार के हैं, अन्यथा rec_array पहले से ही आप चाहते हैं।
अपने विशेष मामले के बारे में, मैं पूरी तरह से समझ नहीं पा रहा हूं कि आपके उदाहरण में db
क्या है। यदि यह एक कर्सर ऑब्जेक्ट है, तो आप केवल fetchall
विधि को कॉल कर सकते हैं और टुपल्स की एक सूची प्राप्त कर सकते हैं। ज्यादातर मामलों में, डेटाबेस लाइब्रेरी आंशिक रूप से पढ़ा गया क्वेरी परिणाम नहीं रखना चाहती है, प्रत्येक कोड को आपके कोड प्रोसेसिंग की प्रतीक्षा कर रही है, जो उस समय तक है जब execute
विधि लौटाती है, सभी डेटा पहले से ही एक सूची में संग्रहीत है, और शायद ही कभी cursor
इंस्टेंस करने के बजाय fetchall
का उपयोग करने की समस्या।
यह सुनिश्चित नहीं करता कि यह काम करता है: http://docs.scipy.org/doc/numpy/reference/generated/numpy.fromiter.html – Fabricator
@ फ़ैब्रिकेटर प्रलेखन कहता है कि यह एक * 1 डी * सरणी को पुन: प्रयोज्य बनाता है। इस मामले में यह 4 कॉलम के साथ 2 डी सरणी के बजाय ऑब्जेक्ट्स की एक सरणी बना देगा। – Bakuriu
'np.loadtxt' एक सरणी, अर्थात् एक फ़ाइल से सरणी बनाने का एक उदाहरण है। सरलीकृत शब्दों में, यह एक रेखा पढ़ता है, इसकी सबस्ट्रिंग से एक सूची बनाता है, और इसे एक सूची में जोड़ता है। अंत में यह सूचियों की सूची को सरणी में बदल देता है। – hpaulj