繁体   English   中英

使用字符串从.txt文件创建矩阵

[英]Create a matrix from a .txt file with strings

我需要从.txt文件创建一个矩阵,我遇到的问题是.txt文件包含很多信息(也许不是很多,但是我是编程新手,所以在处理它时遇到了问题) ...该文件具有:

  • 客户编号
  • 名称
  • 年龄
  • 单身或已婚(S或M)
  • 性别(男或女)
  • 最喜欢的动物

像这样:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM