2015-09-08 29 views
5

सबसे पहले मुझे दिखाएं कि मैं क्या करना चाहता हूं।विशेषताइंटर: 'numpy.int32' ऑब्जेक्ट में कोई विशेषता नहीं है 'संलग्न करें'

x_new[0]= [0,2,8] (for similar position of repeated 1's in x) 
x_new[1]=[1,3,6,9](for similar position of repeated 2's in x) 
x_new[2]=[4,5,7] (for similar position of repeated 3's in x) 

अब तक मैं क्या किया है:
मैं एक मैट्रिक्स है,

x = [1, 2, 1, 2, 3, 3, 2, 3, 1, 2] 

सभी मैं करना चाहता हूँ सरणी में बार-बार संख्या की स्थिति का चयन और एक मैट्रिक्स में उसका प्रिंट ले x_new जहां है है:

a=[]  
x=m[:,3] #x=np.array([1, 2, 1, 2, 3, 3, 2, 3, 1, 2])  
ss=set([i for i in x if sum([1 for a in x if a == i]) > 1])  
lenss=len(ss)  
for ln in range(lenss):  
    for k in range(10):  
     if(x[k]== list(ss)[ln]):  
      print k  
     a.append(ln)  
    print 'next'  

लेकिन a.append लाइन पर यह दिखा रहा है:

'numpy.int32' ऑब्जेक्ट में कोई विशेषता नहीं है 'append'

क्या कोई मुझे बता सकता है कि इस त्रुटि को कैसे दूर किया जाए? धन्यवाद

उत्तर

5

पायथन 2.x में, चर आप आसपास के नेम स्पेस में सूची समझ रिसाव के अंदर उपयोग करते हैं, तो a चर आप सूची समझ में उपयोग करें -

ss=set([i for i in x if sum([1 for a in x if a == i]) > 1]) 

परिवर्तन a चर आप परिभाषित x के तत्वों की सूची के रूप में। इस के लिए

उदाहरण -

>>> i 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
NameError: name 'i' is not defined 
>>> s = [i for i in range(5)] 
>>> i 
4 

आप सूची comprehensin अंदर भिन्न नाम का उपयोग करना चाहिए, और अगर आप अपने चर के लिए और अधिक सार्थक नाम का उपयोग यह मदद मिलेगी, कि इस तरह के मुद्दों में चलाने का जोखिम को कम करेगा।

यह समस्या पायथन 3.x में नहीं होनी चाहिए, जैसा कि पायथन 3.x में है, सूची की समझ में स्वयं का नामस्थान है। पहली पंक्ति a=[] में, लेकिन आप एस एस जनरेटर में फिर से a का उपयोग करें::

+0

ओह क्षमा करें ... आपको मिल गया। मुझे जाँचने दो। बहुत बहुत धन्यवाद –

1

आप अपने चर a पुन: असाइन

ss=set([i for i in x if sum([1 for एक in x if a == i]) > 1])

सरल उदाहरण:

>>> [x for x in range(10)] 
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
>>> x 
9 
>>> 
+0

ओह क्षमा करें ... आपको मिल गया। मुझे जाँचने दो। बहुत बहुत धन्यवाद –

2

इस numpy है आपकी समस्या का समाधान

x = np.array(x) 
unique = np.unique(x) 
[np.where(x == unique_num) for unique_num in unique] 
+0

धन्यवाद बहुत दोस्त :) –

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

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