Python 从带有字符串的.txt文件创建矩阵
我需要从一个.txt文件创建一个矩阵,我遇到的问题是.txt文件有很多信息(可能没有那么多,但我是编程新手,所以我在处理它时有问题)。。。该文件包含:Python 从带有字符串的.txt文件创建矩阵,python,string,file,matrix,Python,String,File,Matrix,我需要从一个.txt文件创建一个矩阵,我遇到的问题是.txt文件有很多信息(可能没有那么多,但我是编程新手,所以我在处理它时有问题)。。。该文件包含: 客户号 名字 姓 年龄 单身或已婚(男或女) 性别(男或女) 喜爱的动物 像这样: 1 James Gordon 35 M M Dog ... 75 Julius Harrison 48 S M Cat 我设法阅读了文件,为每个人创建了一个列表,但还需要计算平均年龄、性别。。。 我不知道如何把每一个元素分开,这样我就可以计算了。 这是到目前
- 客户号
- 名字
- 姓
- 年龄
- 单身或已婚(男或女)
- 性别(男或女)
- 喜爱的动物
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
)来保存数据。您可以使用列表索引来访问数据
e、 g.平均年龄
ages = [r[3] for r in raw]
average_age = float(sum(ages))/len(ages)
由于已经创建了二维列表,因此可以使用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])
如果你想计算你有多少男性,你可以在性别栏中计算你有多少Ms
male_no = len(np.where(matrix[:,5] == 'M'))
然而,一种更好的计数物品的方法,特别是对于动物,如果你可能有超过1-2个选项,你可以使用收集包中的计数器
from collections import Counter
gender_count = Counter(matrix[:,5])
for key in gender_count.keys():
print key, gender_count[key]