我希望将从bash脚本生成的文件的两列内容相乘,然后将它们相加以获得求和。问题是文件在最后一列包含一些我无法摆脱的特殊字符。如何阅读以下文件并乘以col。 3和col。 5然后加起来?我想得到总和= 4 * 821 + 3 * 28 + 4 * 1 + 6 * 1 + 5 * 13 ...
- 0 0 4 0 821.00 95.02%
- 0 0 3 0 28.00 3.24%
- 0 1 4 0 1.00 0.12%
- 0 0 6 0 1.00 0.12%
- 0 0 5 0 13.00 1.50%
醇>
通常我可以通过
完成flist = glob.glob(filename)
fdata = []
for f in flist:
load = np.loadtxt(f)
fdata.append(load)
fdata_arry=np.array(fdata)
print fdata_arry
c = fdata_arry[:,2]*fdata_arry[:,4]
d = np.sum(c)
但在这种情况下,最后一个col。有%符号,这使得阅读困难。有没有办法忽略最后一列。这应该是非常基本的,但我只是一个新的程序员,所以非常感谢你的帮助。谢谢!
答案 0 :(得分:1)
import csv
dat=open('dat','r')
reader= csv.reader(dat, delimiter=' ')
prod=0
for row in reader:
prod+=float(row[2])*float(row[4])
prod
# 3443.0
答案 1 :(得分:1)
http://docs.scipy.org/doc/numpy/reference/generated/numpy.loadtxt.html
使用usecols
的{{1}}选项指定要加载的列。
loadtxt
答案 2 :(得分:1)
如果你使用read而不是loadtxt,你可以将每一行作为一个易于操作的字符串,尝试类似下面的内容,
import numpy as np
f = '/home/davcra/Desktop/test.txt'
fdata = []
with open (f, "r") as myfile:
data=myfile.readlines()
for i, line in enumerate(data):
data[i] = line.strip('%\n').strip('\n').split(' ')
data[i] = [float(d) for d in data[i]]
data = np.asarray(data)
print data
c = data[:,2]*data[:,4]
d = c.sum()