如何将数据文件的两列相乘并在python中添加它们?

时间:2014-09-12 08:41:58

标签: python

我希望将从bash脚本生成的文件的两列内容相乘,然后将它们相加以获得求和。问题是文件在最后一列包含一些我无法摆脱的特殊字符。如何阅读以下文件并乘以col。 3和col。 5然后加起来?我想得到总和= 4 * 821 + 3 * 28 + 4 * 1 + 6 * 1 + 5 * 13 ...

  
      
  1. 0 0 4 0 821.00 95.02%
  2.   
  3. 0 0 3 0 28.00 3.24%
  4.   
  5. 0 1 4 0 1.00 0.12%
  6.   
  7. 0 0 6 0 1.00 0.12%
  8.   
  9. 0 0 5 0 13.00 1.50%
  10.   

通常我可以通过

完成
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。有%符号,这使得阅读困难。有没有办法忽略最后一列。这应该是非常基本的,但我只是一个新的程序员,所以非常感谢你的帮助。谢谢!

3 个答案:

答案 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()