我需要从.txt文件创建一个矩阵,我遇到的问题是.txt文件有很多信息(可能没那么多,但我是编程的新手,所以我遇到了问题用它)...文件有:
1 James Gordon 35 M M Dog
...
75 Julius Harrison 48 S M Cat
我设法读取文件并为每个人创建一个列表,但是还需要计算年龄,性别的平均值... 我不知道如何分离每个元素,所以我可以做数学。 这是迄今为止的代码。
infile=open("db.txt","r")
list=infile.read()
matrix=[]
raw = []
with open('db.txt','r') as f:
for line in f:
raw.append(line.split())
答案 0 :(得分:0)
您正在使用列表(raw
)来保存数据。您可以使用列表索引来访问数据。
e.g。平均年龄
ages = [r[3] for r in raw]
average_age = float(sum(ages))/len(ages)
答案 1 :(得分:0)
由于您已创建了2D列表,因此您只需使用X和Y坐标即可访问这些元素。例如,要计算其年龄的平均值,您可以总结每个人的子列表的第四个元素。以下页面提供了几种方法:
答案 2 :(得分:0)
根据您对矩阵感兴趣的内容,将所有内容放在一个numpy数组中可能是一个好主意。您可以更轻松地在任一轴上切片对象,而numpy数组比遍历列表更快。
import numpy as np
# read file and store the file lines in `raw` as you have done above, then
matrix = np.array(raw, dtype=object)
matrix[:,3] = matrix[:,3].astype(int)
average = np.mean(matrix[:,3])
如果您想计算自己拥有的男性人数,可以计算性别列中有多少名女士。
male_no = len(np.where(matrix[:,5] == 'M'))
但是,对于计算物品的更好方法,尤其是对于可能有1-2个以上选项的动物,您可以使用收集包中的Counter
。
from collections import Counter
gender_count = Counter(matrix[:,5])
for key in gender_count.keys():
print key, gender_count[key]