2011-09-07 40 views
46

में मैं एक numpy सरणी युक्त है:सरणी के लिए एक तत्व जोड़े numpy

[1, 2, 3] 

मैं एक सरणी युक्त बनाना चाहते हैं:

[1, 2, 3, 1] 

है कि, मैं पर पहला तत्व जोड़ना चाहते हैं सरणी के अंत तक।

मैं स्पष्ट की कोशिश की है:

np.concatenate((a, a[0])) 

लेकिन मैं कह रहा ValueError: arrays must have same number of dimensions

मुझे यह समझ में नहीं आता कोई त्रुटि मिलती है - सरणियों दोनों सिर्फ 1 दिन सरणियों कर रहे हैं।

+0

'np.insert ([1,2,3], 3, 1)' – Sparkler

+2

स्वीकृत उत्तर के अपवाद के साथ, अन्य लोग बहुत निराशाजनक हैं। –

उत्तर

74

मुझे लगता है कि यह एक तत्व जोड़ने के लिए उचित विधि का उपयोग करने के लिए और अधिक सामान्य है:

numpy.append(a, a[0]) 
+0

आप 'एपेंड' (और मेरा +1 है) के बारे में सही हैं, लेकिन मुझे लगता है कि 'concatenate' को इस [http://docs.scipy.org/doc/ के अनुसार, सरणी का एक झुकाव लेना चाहिए) numpy/संदर्भ/जेनरेट/numpy.concatenate.html) और [यह] (http://www.scipy.org/Numpy_Example_List#concatenate), उदाहरण के लिए। – DMA57361

+0

opps, आप सही हैं :) (जैसा कि एक अल्पविराम है, हो सकता है कि यह इसे एक टुपल के रूप में ले जाए, भले ही मैंने ब्रैकेट में नहीं डाला) – steabert

+0

यह आदेश 'ए' सरणी को परिवर्तित नहीं करता है। हालांकि, यह एक नई संशोधित सरणी देता है। इसलिए, यदि 'ए' संशोधन की आवश्यकता है तो 'a = numpy.append (a, a [0]) 'का उपयोग किया जाना चाहिए। – Amjad

11

a[0] एक सरणी नहीं है, यह a का पहला तत्व है और इसलिए इसमें कोई आयाम नहीं है।

इसके बजाय a[0:1] का उपयोग करने का प्रयास करें, जो एक आइटम आइटम के अंदर a का पहला तत्व लौटाएगा।

7

कोशिश इस

np.concatenate((a, np.array([a[0]])) 

http://docs.scipy.org/doc/numpy/reference/generated/numpy.concatenate.html

CONCATENATE दोनों तत्वों की जरूरत है श्रृंखला होना चाहिए, हालांकि एक [0] एक सरणी नहीं है। यही कारण है कि यह काम नहीं करता है।

+0

या, अधिक सरल 'np.concatenate ((ए, [ए [0]])) '। सूची को किसी भी टाइपिंग को सहेजते हुए, किसी भी तरह से सरणी प्रकार में स्वचालित रूप से प्रचारित किया जाएगा। –

3

इसमें कुछ समय overkill हो सकता है, लेकिन मैं हमेशा किसी भी चादर के आसपास अनुक्रमण के लिए np.take फ़ंक्शन का उपयोग करें :

>>> a = np.array([1, 2, 3]) 
>>> np.take(a, range(0, len(a)+1), mode='wrap') 
array([1, 2, 3, 1]) 

>>> np.take(a, range(-1, len(a)+1), mode='wrap') 
array([3, 1, 2, 3, 1]) 
0

मान लीजिए कि a=[1,2,3] करते हैं और आप इसे [1,2,3,1] होना चाहता हूँ।

आप अंतर्निहित संलग्न समारोह

np.append(a,1) 

यहाँ 1 एक पूर्णांक है का उपयोग कर सकते हैं, यह एक स्ट्रिंग हो सकता है और यह कर सकते हैं या सरणी में तत्वों का नहीं हो सकता है। प्रिंटों: [1,2,3,1]

+0

स्टैक ओवरव्लो में आपका स्वागत है! कोड को प्रारूपित करने के तरीके के बारे में आप [इस गाइड] (https://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks) को पढ़ना चाहेंगे और फिर अपना उत्तर अपडेट कर सकते हैं ताकि यह अधिक पठनीय है :) यह भी एक स्वीकार्य उत्तर के साथ एक बहुत पुराना सवाल है, कुछ नए लोगों का जवाब देने के लिए बेहतर है – 0mpurdy

0

यह आदेश,

numpy.append(a, a[0])

a सरणी में परिवर्तन नहीं करता। हालांकि, यह एक नई संशोधित सरणी देता है। तो, a संशोधन तो आवश्यक है

a = numpy.append(a,a[0])

इस्तेमाल किया जाना चाहिए।

संबंधित मुद्दे