python3 读取txt、csv、mat文件数据并存入array具体实现

1、读取txt文件

下面的代码中需要设置你读取数据的数组的维度信息,如下

datamat = np.zeros((rows, 6))  #表示6列数据

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

filename = 'preprocess1.txt'


# 数值文本文件转换为双列表形式[[...],[...],[...]],即动态二维数组
# 然后将双列表形式通过numpy转换为数组矩阵形式

# 数值文本文件直接转换为矩阵数组形式方法二
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, 6))  # 初始化矩阵

    row = 0
    for line in lines:
        line = line.strip().split('\t')  # strip()默认移除字符串首尾空格或换行符
        print(line)
        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, 6))  # 初始化矩阵
    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__':
    filename = 'winedata.txt'
      # 二维列表
    data = txt_to_matrix(filename)
    print (data)
    print(data.__len__())
    #out = text_read('winedata.txt')
    #print(out)'''

2、读取csv文件

在python中内置了csv库,通过调用相关函数即可实现文件的读取,将csv文件读取载入到数组可以采用python的pandas库中的read_csv()函数来读取。具体实现如下:

import numpy as np
import pandas as pd
import os
 
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 = np.array(y1) 
print Y

3、mat文件读取

python的scipy中有专门的函数来方便.mat的文件的载入和存储,具体实现所示,

import scipy.io as sio
import numpy as np
 
###下面是讲解python怎么读取.mat文件以及怎么处理得到的结果###
load_fn = 'xxx.mat'
load_data = sio.loadmat(load_fn)
load_matrix = load_data['matrix'] #假设文件中存有字符变量是matrix,例如matlab中save(load_fn, 'matrix');当然可以保存多个save(load_fn, 'matrix_x', 'matrix_y', ...);
load_matrix_row = load_matrix[0] #取了当时matlab中matrix的第一行,python中数组行排列
 
###下面是讲解python怎么保存.mat文件供matlab程序使用###
save_fn = 'xxx.mat'
save_array = np.array([1,2,3,4])
sio.savemat(save_fn, {'array': save_array}) #和上面的一样,存在了array变量的第一行
 
save_array_x = np.array([1,2,3,4])
save_array_y = np.array([5,6,7,8])
sio.savemat(save_fn, {'array_x': save_array_x, 'array_x': save_array_x}) #同理,只是存入了两个不同的变量供使用

 

你可能感兴趣的:(python)