[英]Create a matrix from a .txt file with strings
我需要从.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())
您正在使用列表列表( raw
)来保存数据。 您可以使用列表索引来访问数据。
例如平均年龄
ages = [r[3] for r in raw]
average_age = float(sum(ages))/len(ages)
由于创建了2D列表,因此可以简单地使用X和Y坐标访问元素。 例如,要计算其年龄的平均值,您可以汇总每个人的子列表的第四个元素。 下一页提供了几种方法来执行此操作:
根据您对矩阵感兴趣的事情,将所有内容放入一个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]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.