Python 读取txt、csv、mat数据并载入到数组

一、txt文件数据载入到数组    这里结合上一篇博文的数据来讲怎么方便的载入.txt文件到一个数组,数据如下所示:1、自己写Python代码实现txt文本数据读取并载入成数组形式(PS:下面给了三种方法,选择理解)#-*-coding:cp936-*-importreimportlinecacheimportnumpyasnpimportosfilename=…

大家好,又见面了,我是你们的朋友全栈君。

一、txt文件数据载入到数组

    这里结合上一篇博文的数据来讲怎么方便的载入.txt文件到一个数组,数据如下所示:

Python 读取txt、csv、mat数据并载入到数组

1、自己写Python代码实现txt文本数据读取并载入成数组形式(PS:下面给了三种方法,选择理解)

# -*- coding: cp936 -*-
import re
import linecache
import numpy as np
import os

filename = 'preprocess1.txt'

#数值文本文件转换为双列表形式[[...],[...],[...]],即动态二维数组
#然后将双列表形式通过numpy转换为数组矩阵形式
def txt_strtonum_feed(filename):
    data = []
    with open(filename, 'r') as f:#with语句自动调用close()方法
        line = f.readline()
        while line:
            eachline = line.split()###按行读取文本文件,每行数据以列表形式返回
            read_data = [ float(x) for x in eachline[0:7] ] #TopN概率字符转换为float型
            lable = [ int(x) for x in eachline[-1] ]#lable转换为int型
            read_data.append(lable[0])
            #read_data = list(map(float, eachline))
            data.append(read_data)
            line = f.readline()
        return data #返回数据为双列表形式

#数值文本文件直接转换为矩阵数组形式方法二
def txt_to_matrix(filename):
    file=open(filename)
    lines=file.readlines()
    #print lines
    #['0.94\t0.81\t...0.62\t\n', ... ,'0.92\t0.86\t...0.62\t\n']形式
    rows=len(lines)#文件行数

    datamat=np.zeros((rows,8))#初始化矩阵

    row=0
    for line in lines:
        line=line.strip().split('\t')#strip()默认移除字符串首尾空格或换行符
        datamat[row,:]=line[:]
        row+=1

    return datamat


#数值文本文件直接转换为矩阵数组形式方法三
def text_read(filename):
    # Try to read a txt file and return a matrix.Return [] if there was a mistake.
    try:
        file = open(filename,'r')
    except IOError:
        error = []
        return error
    content = file.readlines()

    rows=len(content)#文件行数
    datamat=np.zeros((rows,8))#初始化矩阵
    row_count=0
    
    for i in range(rows):
        content[i] = content[i].strip().split('\t')
        datamat[row_count,:] = content[i][:]
        row_count+=1

    file.close()
    return datamat


if __name__ == '__main__':

    test_content = txt_strtonum_feed('preprocess1.txt')
    content = np.array(test_content)
    print content #矩阵数组形式
    print '\n'
    print test_content #二维列表

    data = txt_to_matrix(filename)
    print data

    out = text_read('preprocess1.txt')
    print out

    代码编译所得结果如下图所示(其中方法一思路是先得到动态二维数组,即二维列表的形式,最后在mian函数里使用np.arry()函数将其转换为数组形式,这里将两种形式结果都输出):

Python 读取txt、csv、mat数据并载入到数组

2、调用numpy中loadtxt()函数快速实现。(并且可以通过设定参数选取部分对应列数据载入数组,具体详细实践可以参考以下博文地址:https://www.cnblogs.com/hecc/p/8480532.html,具体结果可以就不展示)

import numpy as np
import os
data1=np.loadtxt('preprocess1.txt',delimiter='\t') #delimiter参数依据原始文本数据每行数字之间符号,这里为\t
np.savetxt("data3.txt",data1,fmt="%5.3f",delimiter="\t",newline=os.linesep) #将读取的文件保存到另一文本

二、CSV文件数据载入到数组

    在一些数据竞赛里面碰到很多的数据都是.csv文件给出的,说明应用应该还是有一些广泛。首先这里csv文件编码格式必须为UTF-8,否则会报编码错误信息。(txt转csv文件流程:打开excel—>数据—>导入文本/csv—>编码格式选择UTF-8—>保存选择csv格式)。csv文件打开如下所示:

Python 读取txt、csv、mat数据并载入到数组

    首先python内置了csv库,可以调用然后自己手动来写操作的代码,比较简单的csv文件读取载入到数组可以采用python的pandas库中的read_csv()函数来读取。其中函数的具体参数很长,在此忽略,详细参考专业api文档。这里代码实现及结果如下所示:

import numpy as np
import pandas as pd
import os

#UTF-8编码格式csv文件数据读取
df = pd.read_csv('preprocess.csv') #返回一个DataFrame的对象,这个是pandas的一个数据结构
df.columns=["Col1","Col2","Col3","Col4","Col5","Col6","Col7","Col8"]

X = df[["Col1","Col2","Col3","Col4","Col5","Col6","Col7"]] #抽取前七列作为训练数据的各属性值
X = np.array(X)
print X

y1 = df["Col8"] #最后一列作为每行对应的标签label
#Y = df["Col8"].map(lambda y1:float(y1.rstrip(";")))
Y = np.array(y1) 
print Y

Python 读取txt、csv、mat数据并载入到数组

三、mat文件数据载入到数组

    .mat文件是MATLAB存储数据的标准格式,很多的机器学习任务用.MAT来存出数据文件。python的scipy中有专门的函数来方便.mat的文件的载入和存储,具体函数如下所示,实现就一行代码这里就不展示了,可以自行参考其他资料。

scipy.io.loadmat(file_name, mdict=None, appendmat=True, **kwargs) #载入MATLAB文件 #保存一个带有名称和序列的字典到.mat文件中 scipy.io.savemat(file_name, mdict, appendmat=True, format=’5’, long_field_names=False, do_compression=False, oned_as=’row’)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/126262.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • IT公司速查手册–IT公司红黑榜

    IT公司速查手册–IT公司红黑榜IT公司速查手册–IT公司红黑榜http://www.bewww.net/index.html今天看到bewww.net原来有红黑榜,好像以前上去的时候还没有这个的。找工作的兄弟们要多留个心眼了,可疑的公司要先上网上查下,防止受骗~~~~黑榜上有不少挺熟悉的公司,好像我还投过简历的也有~~~ 

    2022年7月16日
  • 大数据时代,何来隐私保护_大数据时代人还有什么隐私

    大数据时代,何来隐私保护_大数据时代人还有什么隐私数据影响力正在不断增强。网络上的个人信息帮助特朗普赢得了总统竞选,而民众的在线身份一次又一次的让Facebook突破底线。但由于美国大选以及最近揭露的Facebook数据泄密丑闻,不仅引来了联邦贸易委员会的调查,还让在线消费者和立法者对数据在我们生活中的角色提出了质疑。而数据科学家们也开始质疑起自己的未来。Facebook首席执行官马克扎克伯格对公司造成的疏忽表示道歉,但是对一些数据专家来说,这是…

    2022年9月28日
  • 信息审计服务器功能,服务器审计日志「建议收藏」

    信息审计服务器功能,服务器审计日志「建议收藏」服务器审计日志内容精选换一换Manager的审计日志默认保存在数据库中,如果长期保留可能引起数据目录的磁盘空间不足问题,管理员如果需要将审计日志保存到其他归档服务器,可以在FusionInsightManager设置转储参数及时自动转储,便于管理审计日志信息。若用户未配置审计日志转储,当审计日志达到十万条,系统自动将这十万条审计日志保存到文件中。保存路径为主管理节为加强对系统数据的容灾管理,云…

    2022年5月4日
  • sqlpro studio激活(JetBrains全家桶)

    (sqlpro studio激活)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~FNWCMR37AF-eyJsaWNlbnNlSWQiOi…

    2022年3月30日
  • IDEA惊天bug:进程已结束,退出代码-1073741819 (0xC0000005)[通俗易懂]

    IDEA惊天bug:进程已结束,退出代码-1073741819 (0xC0000005)[通俗易懂]由于昨天要写的文章没有写完,于是今天早上我四点半就“自然醒”了,心里面有事,睡觉也不安稳。洗漱完毕后,我打开电脑,正襟危坐,摆出一副要干架的态势,不能再拖了。要写的文章中涉及到一串代码,关于Undertow的一个入门示例,贴出来大家看一下。publicclassUndertowTest{publicstaticvoidmain(finalString[]args)…

    2022年10月3日
  • C++ 求矩阵的秩

    C++ 求矩阵的秩网易笔试题:混合颜料下面 int getNumOfLeastColors(setint>& colorSet) {// 求二进制矩阵的秩,即消元,最后看斜对角线上有几个 1  的方法,就是求矩阵的秩你就是一个画家!你现在想绘制一幅画,但是你现在没有足够颜色的颜料。为了让问题简单,我们用正整数表示不同颜色的颜料。你知道这幅画需要的n种颜色的

    2022年5月7日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号