numpy

2010-04-20 24 views
7

के साथ ऑब्जेक्ट्स सरणी कोई ऑब्जेक्ट फॉर्म बनाने के लिए कोई तरीका है जो किसी भी वर्ग को एक numpy array के अंदर बनाता है? की तरह कुछ:numpy

a = zeros(4) 

for i in range(4): 
    a[i]=Register() 

धन्यवाद

उत्तर

11

हाँ, आप ऐसा कर सकते हैं:

a = numpy.array([Register() for _ in range(4)]) 

यहाँ, a.dtypedtype('object') है।

वैकल्पिक रूप से, यदि आप वास्तव में अपने सरणी के लिए स्मृति आरक्षित है और फिर इसे तत्व द्वारा तत्व का निर्माण करने की जरूरत है, तो आप कर सकते हैं:

a = numpy.empty(shape=(4,), dtype=object) 
a[0] = Register() # etc. 
+0

@ माइक: पहले समाधान में टाइपो को स्पॉट करने के लिए धन्यवाद; मेरा मतलब यह था कि आपने अपने समाधान में क्या रखा है। मैं पहले सूची बनाने के लिए भूल गया था; अब यह सही है। दूसरे समाधान के लिए, मैं numpy.empty पर स्विच किया। – EOL

5

NumPy सरणी में आइटम स्थिर लिखे जाते हैं, और जब आप zeros आप कॉल फ्लोट की एक सरणी बनाओ। मनमाने ढंग से अजगर वस्तुओं की दुकान करने के लिए, की तरह

numpy.array([Register() for i in xrange(4)]) 

जो dtype=object साथ एक सरणी है, जो आप मैन्युअल रूप से भी निर्दिष्ट कर सकते हैं बनाता है कोड का उपयोग करें।

इस बात पर विचार करें कि क्या आप वास्तव में इस मामले में numpy चाहते हैं। मुझे नहीं पता कि यह उदाहरण आपके उपयोग के मामले में कितना करीब है, लेकिन कई बार टाइप प्रकार ऑब्जेक्ट की एक numpy सरणी, विशेष रूप से एक-आयामी वाला, कम से कम एक सूची के साथ काम करेगा।