2012-11-28 30 views
5

तो मैं अजगर के लिए नया हूं और इस उत्तर की खोज की है लेकिन अधिकांश प्रतिक्रियाएं मेरे सिर पर हैं।सूची में कॉलम का योग ढूंढना "टाइप एरर: लचीला प्रकार के साथ कम प्रदर्शन नहीं कर सकता"

right point point 1.76999998093 
right fear fear 1.62700009346 
right sit sit 1.46899986267 
right chord chord 1.47900009155 
right speed speeed 1.71300005913 
right system system 1.69799995422 
right hard hard 1.4470000267 
right excite excite 2.93799996376 
right govern govern 1.85800004005 
right record record 1.62400007248 

मैं कॉलम में सूची विभाजित है और संख्याओं का माध्य/योग/एसटीडी देव को खोजने के लिए कोशिश कर रहा हूँ: मैं इस तरह एक सूची है। तो मूल रूप से मैं आखिरी बार एक सरणी रूप में प्राप्त करने की कोशिश कर रहा हूं, मैं np.mean, np.sum, आदि का उपयोग कर सकता हूं।

right=open('right.txt').readlines() 
for line in right: 
    l=line.split() 
    righttime=l[3] 
    print righttime 

rightsum=np.sum(righttime) 
rightmean=np.mean(righttime) 

तब मैं इस त्रुटि मिलती है: डेटा 'सही' यहाँ कहा जाता है एक फ़ाइल में है जो मैं अब तक है कि "लेखन त्रुटि: लचीला प्रकार के साथ को कम नहीं कर सकता" मैं इसे तरीकों की टन की कोशिश की और रख दिया है त्रुटियां प्राप्त करना यह एक और तरीका है जिसकी मैंने कोशिश की थी कि आशाजनक लग रहा था:

def TimeSum(data): 
    for line in data: 
     l=line.split() 
     righttime=l[3] 
     print righttime 
    return righttime 

rightsum=np.sum(TimeSum(right)) 

लेकिन मुझे एक ही त्रुटि थी। क्या किसी को भी यह करना आता है?

उत्तर

7

एक सूची उत्पन्न और तत्वों का योग:

import numpy as np 

right = open('right.txt').readlines() 
mylist = [] 

for line in right: 
    l = line.split() 
    mylist.append(float(l[3])) # add to list "mylist" 

rightsum = np.sum(mylist) 
print rightsum 

या, वैकल्पिक रूप से

mylist = [float(line.split()[3]) for line in right] # generate numbers list 
print np.sum(mylist) # sum numbers 
+0

आप आदमी फेलिप। धन्यवाद! –

+0

@EvanBrown इसके बारे में कुछ भी नहीं सोचो! ;) – felipsmartins

4

आप निर्दिष्ट करना चाहिए (हाँ, स्पष्ट रूप से) डेटा प्रकार, इस मामले में, नाव (या पूर्णांक, जो कुछ भी!):

rightsum = np.sum(float(righttime)) 
rightmean = np.mean(float(righttime)) 

याद रखें numpy के लिए, आप एक संरचना "सरणी की तरह" प्रदान करना होगा .sum():

>>>import numpy as np 
>>> 
>>> mylist = [1, 5, 2] 
>>> a = np.asarray(mylist) 
>>> a.sum() 
8 

वैकल्पिक रूप से:

>>> np.sum([1,5,2]) 
8 
+0

मुझे लगता है कि मेरे सवाल का भी का हिस्सा है। मैं अब संख्याओं के स्तंभ पृथक है, लेकिन वे संरचित नहीं कर रहे हैं: 1,06500005722 1,27900004387 1,29099988937 1,64499998093 1,86100006104 1,35100007057 2,07699990273 1,54999995232 1,58100008965 यह सिर्फ संख्या का एक ऊर्ध्वाधर स्तंभ है। मैंने r = np.array (thelist) और r = np.asarray (thelist) इत्यादि करने की कोशिश की है, मुझे कोई भाग्य नहीं है, जब मैं योग और मतलब करने की कोशिश करता हूं तो मुझे त्रुटियां मिलती रहती हैं। –

+0

आप सभी संख्याओं को जोड़ना चाहते हैं? – felipsmartins

+0

हां आखिरी कॉलम में सभी संख्याएं? –