AI5*_*963 5 python csv file-io numpy
所以我对Python非常环保,并试图通过复制我编写的一些matlab代码来学习.我有一个部分,在matlab中,我加载了一个制表符分隔的数据文件.语法
x = load(data.txt)
Run Code Online (Sandbox Code Playgroud)
获取制表符分隔的数据并将其放入标记为x的矩阵的单元格中.
有没有办法在python中执行此操作,但使用逗号分隔的数据?
ced*_*beu 17
有几种方法,选择最适合您应用的方法.
如果您正在使用numpy的,也可能是使用numpy的是一个好主意load
,loadtxt
,fromfile
或genfromtxt
功能,因为您的文件将被加载到一个合适的结构,预处理后.
但是,如果您不打算使用numpy(或任何其他具有一些文件加载功能的大型库),那么仅仅用于加载文件就太过分了......考虑使用内置的python函数或者csv 来自标准库的模块 ......它将更灵活,更顺畅.
以下是使用示例的方法file.txt
(每行的值用制表符分隔):
1 2 3 4
7 8 9 10 11 12
13 14 15
Run Code Online (Sandbox Code Playgroud)
没有模块可以导入,非常简单,灵活,适合大多数情况,imho.
以二进制模式加载文件以rb
在表中读取(标志)(值列表列表,在文件中用选项卡分隔),只有内置函数:
>>> file = open('file.txt', 'rb')
>>> table = [row.strip().split('\t') for row in file]
Run Code Online (Sandbox Code Playgroud)
标准库中的csv模块也非常简单.
请注意,altough CSV表示逗号分隔值,实际上没有标准,您可以选择所需的任何分隔符.因此,CSV代表所有面向单元格或类似表格的文件.
加载在二进制模式的文件读取(rb
表中的标志)(值列表的列表,标签上的文件中分离出来)与CSV reader
:
>>> import csv
>>> file = open('file.txt', 'rb')
>>> data = csv.reader(file, delimiter='\t')
>>> table = [row for row in data]
Run Code Online (Sandbox Code Playgroud)
该表已与前两个示例类似地加载,并且可以访问表的数据,如table[row][col]
:
>>> table
[['1', '2', '3', '4'], ['7', '8', '9', '10', '11', '12'], ['13', '14', '15']]
>>> table[0]
['1', '2', '3', '4']
>>> table[1][2]
9
Run Code Online (Sandbox Code Playgroud)
DSM*_*DSM 10
如果您使用Python进行类似MATLAB的目的,那么您将希望使用NumPy(和scipy); 特别是,您应该阅读NumPy for MATLAB Users.
如果你有逗号分隔的数据,你可以numpy.loadtxt
用来读取它(当然在安装numpy之后):
$ cat matrix.csv
1,2,3
4,5,6
7,8,9
Run Code Online (Sandbox Code Playgroud)
然后
>>> import numpy as np
>>> m = np.loadtxt("matrix.csv", delimiter=",")
>>> m
array([[ 1., 2., 3.],
[ 4., 5., 6.],
[ 7., 8., 9.]])
>>> np.matrix(m)
matrix([[ 1., 2., 3.],
[ 4., 5., 6.],
[ 7., 8., 9.]])
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
38123 次 |
最近记录: |