在列表中查找列的和以获取“TypeError:无法使用灵活类型执行reduce”

2024-05-13 11:24:51 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我对python还不太熟悉,我一直在寻找这个答案,但是大多数的回答都是在我的脑海里。我有一张这样的单子:

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”的文件中,这是我目前掌握的:

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)

然后我得到这个错误:“type error:不能用灵活的类型执行reduce”我已经尝试了很多方法,并且不断地得到错误。这是我尝试的另一种似乎很有前途的方法:

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

rightsum=np.sum(TimeSum(right))

但我也犯了同样的错误。有人知道怎么做吗?


Tags: right错误nplinerecordsystempointsum
2条回答

您应该指定(是的,显式地)数据类型,在本例中是float(或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

生成列表并对元素求和:

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

相关问题 更多 >