我试图在列表中加总一些值,所以我加载了包含值的.dat文件,但是Python生成数据总和的唯一方法是将它与',& #39 ;.现在,这就是我得到的。
altura = np.loadtxt("bio.dat",delimiter=',',usecols=(5,),dtype='float')
File "/usr/lib/python2.7/dist-packages/numpy/lib/npyio.py", line 846, in loadtxt
vals = [vals[i] for i in usecols]
IndexError: list index out of range
这是我的代码
import numpy as np
altura = np.loadtxt("bio.dat",delimiter=',',usecols=(5,),dtype='str')
print altura
这是文件' bio.dat'
1 Katherine Oquendo M 18 1.50 50
2 Pablo Restrepo H 20 1.83 79
3 Ana Agudelo M 18 1.58 45
4 Kevin Vargas H 20 1.74 80
5 Pablo madrid H 20 1.70 55
我打算做的是
x=sum(altura)
我应该如何处理'分开'?
答案 0 :(得分:1)
在我的情况下,某些行包含@media screen and (max-width:your-value-here){
img{display:none}
}
字符
然后numpy将忽略该行的所有休止符,因为这意味着“评论”。
因此请使用#
参数再次尝试
comments
我建议您不要使用altura = np.loadtxt("bio.dat",delimiter=',',usecols=(5,),dtype=‘str’,comments=‘')
。因为如果你必须处理一个大的(> 1M行)文件,它会非常慢。
答案 1 :(得分:0)
该文件不需要以逗号分隔。这是我的示例运行,使用StringIO
来模拟文件。我假设您想要总结看起来一个人身高的数字(以米为单位)。
In [17]: from StringIO import StringIO
In [18]: s="""\
1 Katherine Oquendo M 18 1.50 50
2 Pablo Restrepo H 20 1.83 79
3 Ana Agudelo M 18 1.58 45
4 Kevin Vargas H 20 1.74 80
5 Pablo madrid H 20 1.70 55
"""
In [19]: S=StringIO(s)
In [20]: data=np.loadtxt(S,dtype=float,usecols=(5,))
In [21]: data
Out[21]: array([ 1.5 , 1.83, 1.58, 1.74, 1.7 ])
In [22]: np.sum(data)
Out[22]: 8.3499999999999996
as script(包含.txt文件中的数据)
import numpy as np
fname = 'stack25828405.txt'
data=np.loadtxt(fname,dtype=float,usecols=(5,))
print data
print np.sum(data)
2119:~/mypy$ python2.7 stack25828405.py
[ 1.5 1.83 1.58 1.74 1.7 ]
8.35
答案 2 :(得分:0)
或者,您可以先将制表符分隔文件转换为csv。
csv
支持制表符分隔文件。提供delimiter
argument to reader
:
import csv
txt_file = r"mytxt.txt"
csv_file = r"mycsv.csv"
# use 'with' if the program isn't going to immediately terminate
# so you don't leave files open
# the 'b' is necessary on Windows
# it prevents \x1a, Ctrl-z, from ending the stream prematurely
# and also stops Python converting to / from different line terminators
# On other platforms, it has no effect
in_txt = csv.reader(open(txt_file, "rb"), delimiter = '\t')
out_csv = csv.writer(open(csv_file, 'wb'))
out_csv.writerows(in_txt)
这个答案不是我的工作;这是在https://stackoverflow.com/a/10220428/3767980找到的agf的工作。