जवाबों:
यदि आपकी सूचियों की सूची में तत्वों की संख्या अलग-अलग है, तो इग्नासियो वाज़केज़-अब्राम्स का उत्तर काम नहीं करेगा। इसके बजाय कम से कम 3 विकल्प हैं:
1) सारणियों का एक सरणी बनाएं:
x=[[1,2],[1,2,3],[1]]
y=numpy.array([numpy.array(xi) for xi in x])
type(y)
>>><type 'numpy.ndarray'>
type(y[0])
>>><type 'numpy.ndarray'>
2) सूचियों की एक सरणी बनाएं:
x=[[1,2],[1,2,3],[1]]
y=numpy.array(x)
type(y)
>>><type 'numpy.ndarray'>
type(y[0])
>>><type 'list'>
3) सबसे पहले सूचियों को लंबाई में बराबर करें:
x=[[1,2],[1,2,3],[1]]
length = max(map(len, x))
y=numpy.array([xi+[None]*(length-len(xi)) for xi in x])
y
>>>array([[1, 2, None],
>>> [1, 2, 3],
>>> [1, None, None]], dtype=object)
>>> numpy.array([[1, 2], [3, 4]])
array([[1, 2], [3, 4]])
चूंकि यह Google की शीर्ष सूची को नैम्पी सरणी में बदलने के लिए शीर्ष पर है, इसलिए प्रश्न 4 साल पुराना होने के बावजूद मैं निम्नलिखित की पेशकश करूंगा:
>>> x = [[1, 2], [1, 2, 3], [1]]
>>> y = numpy.hstack(x)
>>> print(y)
[1 2 1 2 3 1]
जब मैंने पहली बार इस तरह से करने के बारे में सोचा, तो मैं खुद से काफी खुश था क्योंकि यह सरल है। हालाँकि, यह सूचियों की एक बड़ी सूची के साथ समय के बाद, यह वास्तव में ऐसा करने के लिए तेज़ है:
>>> y = numpy.concatenate([numpy.array(i) for i in x])
>>> print(y)
[1 2 1 2 3 1]
ध्यान दें कि @ बस्तियान का उत्तर # 1 एक निरंतर सूची नहीं बनाता है, इसलिए मैंने इसे जोड़ा concatenate
।
वैसे भी ... मैं hstack
इसे Numpy के सुरुचिपूर्ण उपयोग के लिए दृष्टिकोण पसंद करता हूं ।
फिर, एन स्तरों के साथ नेस्टेड सूचियों को एन-आयामी सरणी में परिवर्तित करने की समस्या के बारे में खोज करने के बाद मुझे कुछ भी नहीं मिला, इसलिए यहां मेरा तरीका है:
import numpy as np
new_array=np.array([[[coord for coord in xk] for xk in xj] for xj in xi], ndmin=3) #this case for N=3
[...[...[...]]]
भाग की आवश्यकता नहीं है । आपको बस कॉल करने की जरूरत है np.array
, साथ ndmin=number-of-list-layers
। (हालांकि मेरे मामले में मुझे ndmin=number-of-list-layers-minus-1
किसी कारण की आवश्यकता थी , अन्यथा एक अतिरिक्त परत बनाई गई - जांच करने की आवश्यकता)
np.array
उन गहरी-सूचियों को केवल "रैप" करने के बजाय उन्हें सुप्त सरणियों में बदल देती है।
मेरे पास समान लंबाई की सूचियों की एक सूची थी। तब भी Ignacio Vazquez-Abrams
मेरे लिए जवाब नहीं आया। मुझे 1-डी सुपीरियर एरे मिला है जिसके तत्व सूचियां हैं। यदि आप एक ही समस्या का सामना कर रहे हैं, तो आप नीचे दी गई विधि का उपयोग कर सकते हैं
उपयोग numpy.vstack
import numpy as np
np_array = np.empty((0,4), dtype='float')
for i in range(10)
row_data = ... # get row_data as list
np_array = np.vstack((np_array, np.array(row_data)))