2012-08-07 13 views
8

बिना numpy सरणी में सभी विषम या यहाँ तक कि अनुक्रमित तत्वों में नंबर जोड़ने का कहना है कि चलो अपने numpy सरणी है:छोरों

A = [1,1,2,3,4] 

आप बस कर सकते हैं:

ए + .1

उस तत्व को जोड़ने के लिए प्रत्येक तत्व numpy array

मैं कोई संख्या जोड़ने का तरीका ढूंढ रहा हूं पूरे सरणी को बरकरार रखते हुए केवल अजीब या यहां तक ​​कि अनुक्रमित संख्या A[::2] +1 तक।

क्या किसी भी लूप के बिना सभी विषम या यहां तक ​​कि अनुक्रमित तत्वों को संख्या जोड़ना संभव है?

+0

इसे बिना लूप के होने की आवश्यकता क्यों है? क्या आप अपना कोड दिखा सकते हैं? जहां आप इसे कोड में कार्यान्वित करना चाहते हैं? –

+1

"पूरे सरणी को बरकरार रखते हुए" क्या मतलब है? क्या आप इन-प्लेस ऑपरेशंस से बाहर निकल रहे हैं? – DSM

उत्तर

16
In [43]: A = np.array([1,1,2,3,4], dtype = 'float') 

In [44]: A[::2] += 0.1 

In [45]: A 
Out[45]: array([ 1.1, 1. , 2.1, 3. , 4.1]) 

ध्यान दें कि यह A को संशोधित करता है। आप A असंशोधित छोड़ना चाहते हैं, नकल A पहले:

In [46]: A = np.array([1,1,2,3,4], dtype = 'float') 

In [47]: B = A.copy() 

In [48]: B[::2] += 0.1 

In [49]: B 
Out[49]: array([ 1.1, 1. , 2.1, 3. , 4.1]) 

In [50]: A 
Out[50]: array([ 1., 1., 2., 3., 4.]) 
2

सूची समझ के साथ कुछ काम कर सकता था।

A = [1,1,2,3,4] 
A = [A[i] + (0 if (i%2 == 0) else .1) for i in range(len(A))] 

बस एक तेज़ के साथ त्वरित और गंदा। पाइथन के आपके संस्करण में काम नहीं कर सकता है, यह याद नहीं कर सकता कि यह किस संस्करण के साथ काम करता है।


अजगर 2.7.3 और 3.2.3 अजगर चेक इन किया गया, उत्पादन में एक ही है:

>>> A = [1,1,2,3,4] 

>>> A 
[1, 1, 2, 3, 4] 

>>> A = [A[i] + (0 if (i%2 == 0) else .1) for i in range(len(A))] 

>>> A 
[1, 1.1, 2, 3.1, 4] 
+0

आह, numpy सरणी बिट याद किया। पहला जवाब बहुत बेहतर है। मेरी गलती। – DrGodCarl

5

पिछले जवाब के अलावा, अजीब सूचकांक के साथ संख्या को संशोधित करने का उपयोग करना चाहिए में एक [1: : 2] ए के बजाय [:: 2]

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