2012-11-28 3 views
5

これはPythonには初めてのもので、この回答を検索しましたが、ほとんどの回答は私の頭の上です。私はこのようなリストを持っています:リストの列の和を求める "TypeError:柔軟な型でreduceを実行できません"

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) 

は、その後、私はこのエラーを取得する:「TypeError例外を:フレキシブルタイプはと削減を実行することはできません」私はそれを方法のトンを試してみましたが、維持していますエラーが発生します。これは私が約束したように試みた別の方法です:

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

あなたは男のfelipです。ありがとう! –

+0

@EvanBrown何も考えないでください! ;) – felipsmartins

4

あなたが指定する必要があります(はい、明示的に)データタイプ、この場合は、フロート(またはint型、何でも!):

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

はい最後の列の数字はすべて? –