numpy应用---txt文件转化成矩阵

折腾了大半天,终于搞懂了txt文件中的数据转换成矩阵的过程,这个问题网上的完整解释不太多,自己搞出来了一个成功的版本。

数据下载地址

完整代码如下:

(为啥我的代码不是彩色的啊!丑丑的)

from numpy import *
file = open("/Users/zhaoyueqing/Desktop/train_linear.txt")

filelist = file.readlines()
lenghth = len(filelist)

to_mat= zeros((lenghth,2)) #这里2指想要转化成矩阵是2列的,数据是几列就初始化成几。

index = 0
file = open("/Users/zhaoyueqing/Desktop/train_linear.txt")

for data in file.readlines():
    data = data.strip('\n')
    nums = data.split("    ")
    nums = [float(x) for x in nums]
    to_mat[index,:] = nums[:]
    index +=1
print(to_mat)   
print(type(to_mat))
to_mat = matrix(to_mat)
print(to_mat)
print(type(to_mat))

分步解释代码:

首先,打开文件

file = open("/Users/zhaoyueqing/Desktop/train_linear.txt")

然后,读取文件的每一行,将每一行储存成列表的形式。

filelist = file.readlines()

具体是酱紫的:
在这里插入图片描述
获取数据的行数,也就是文件列表中值的个数,因为一行是列表中的一个元素:

lenghth = len(filelist)

首先,初始化一个全0矩阵:

to_mat= zeros((lenghth,2))

长这样!

numpy应用---txt文件转化成矩阵_第1张图片

下面为啥我又打开了一次文件呢?因为我不会啊!!没想到吧!!T^T
我运行过程中发现运行到上一步的时候文件已经自动关闭了,我没找到怎么解决的办法,所以只能重新打开一次,如果有人明白这里希望指点一下。

file = open("/Users/zhaoyueqing/Desktop/train_linear.txt")

重点来了,下面是一个循环,具体意思是把列表里的空格和换行符都去掉,然后转换成数字的形式,将列表中的数据一行一行的替换掉刚刚建立的全0矩阵。

for data in file.readlines():
    data = data.strip('\n')
    nums = data.split("    ") #这里原文件中两个数据间有多少个空格就打多少个,不然会出错
    nums = [float(x) for x in nums]
    to_mat[index,:] = nums[:]
    index +=1

这段可以在每一步都测试一下结果,print出来比较容易看懂。

最后打印,转换之后的是数组的形式,可以直接用matrix函数转化成矩阵。

print(to_mat)   
print(type(to_mat))
to_mat = matrix(to_mat)
print(to_mat)
print(type(to_mat))

结果:
numpy应用---txt文件转化成矩阵_第2张图片

你可能感兴趣的:(python学习笔记,python,numpy,矩阵)