在Python中从文件加载数组数据的最简单方法是什么?

时间:2016-06-30 18:36:51

标签: python file numpy io

我知道Matlab有一些很好的语法,您可以在其中放入文件数组定义,如A = [[1,2,3],...,然后您可以导入该文件,并自动读取所有这些定义。我想在Python中做类似的事情。基本上我正在寻找从文件中读取表格数据的最简单方法,并将结果对象作为numpy数组实例。最简单的方法是什么? (或者最恐怖的方式?)

假设文件中的数据如下:

Array1
1 0 0 0
2 1 0 0
3 0.3333333333325028 0 0
4 0.6666666666657888 0 0

Array2
1 1 1 1
2 3 1 1
3 2 2 2
4 3 2 2
5 1 1 3
6 1 3 4
7 1 4 2

3 个答案:

答案 0 :(得分:2)

文件 test1.py

#!/usr/bin/python
a=[1,2,3,4,5,6]

文件 test.py

#!/usr/bin/python

import test1

print test1.a

现在,如果你运行test.py:

$ ./test.py
[1, 2, 3, 4, 5, 6]

答案 1 :(得分:2)

如果你想把你的数据放在Python模块中,下面Jahid说的很好。

如果另一方面,您宁愿将数据放在单独的文件中,例如一个文本文件,然后在脚本中读取它,您可能想要使用int(它被设计为自动将矩阵式文件读入numpy数组)。

http://docs.scipy.org/doc/numpy/reference/generated/numpy.loadtxt.html

答案 2 :(得分:0)

您可能想要的是将数据放在yaml文件格式中。它是一种文本数据格式,其结构基于Python等高级脚本语言。您可以在其中放置多个任意类型的2D数组。但是,由于它只是数据而不是代码,因此将数据直接放在Python脚本中并不危险。它可以非常容易地生成2D arrays或更严格的嵌套列表(具体看该链接的示例2.5),以及普通列表,dicts,嵌套dicts,字符串及其任何组合的等价物。由于您可以将一种数据类型嵌套在另一种数据类型中,因此可以使用二维数组的字典,例如,它允许您将多个数组放在一个文件中。

以下是您在yaml中的示例:

$ ls -l /etc/php/mods-available/ | awk {'print $9" "$10" "$11'}
curl.ini
json.ini
mongodb.ini
mysqli.ini
opcache.ini
pdo_mysql.ini
pdo_sqlite.ini
readline.ini
sqlite3.ini
tideways.ini
xdebug.ini
xsl.ini

$ ls -l /etc/php/7.0/mods-available/ | awk {'print $9" "$10" "$11'}
calendar.ini
ctype.ini
exif.ini
fileinfo.ini
ftp.ini
gettext.ini
iconv.ini
mcrypt.ini
pdo.ini
phar.ini
posix.ini
shmop.ini
sockets.ini
sysvmsg.ini
sysvsem.ini
sysvshm.ini
tokenizer.ini

$ ls -l /etc/php/7.0/fpm/conf.d/ | awk {'print $9" "$10" "$11'}
10-opcache.ini -> /etc/php/mods-available/opcache.ini
10-pdo.ini -> /etc/php/7.0/mods-available/pdo.ini
20-calendar.ini -> /etc/php/7.0/mods-available/calendar.ini
20-ctype.ini -> /etc/php/7.0/mods-available/ctype.ini
20-curl.ini -> /etc/php/mods-available/curl.ini
20-exif.ini -> /etc/php/7.0/mods-available/exif.ini
20-fileinfo.ini -> /etc/php/7.0/mods-available/fileinfo.ini
20-ftp.ini -> /etc/php/7.0/mods-available/ftp.ini
20-gettext.ini -> /etc/php/7.0/mods-available/gettext.ini
20-iconv.ini -> /etc/php/7.0/mods-available/iconv.ini
20-json.ini -> /etc/php/mods-available/json.ini
20-mcrypt.ini -> /etc/php/7.0/mods-available/mcrypt.ini
20-mongodb.ini -> /etc/php/mods-available/mongodb.ini
20-mysqli.ini -> /etc/php/mods-available/mysqli.ini
20-pdo_mysql.ini -> /etc/php/mods-available/pdo_mysql.ini
20-pdo_sqlite.ini -> /etc/php/mods-available/pdo_sqlite.ini
20-phar.ini -> /etc/php/7.0/mods-available/phar.ini
20-posix.ini -> /etc/php/7.0/mods-available/posix.ini
20-readline.ini -> /etc/php/mods-available/readline.ini
20-shmop.ini -> /etc/php/7.0/mods-available/shmop.ini
20-sockets.ini -> /etc/php/7.0/mods-available/sockets.ini
20-sqlite3.ini -> /etc/php/mods-available/sqlite3.ini
20-sysvmsg.ini -> /etc/php/7.0/mods-available/sysvmsg.ini
20-sysvsem.ini -> /etc/php/7.0/mods-available/sysvsem.ini
20-sysvshm.ini -> /etc/php/7.0/mods-available/sysvshm.ini
20-tokenizer.ini -> /etc/php/7.0/mods-available/tokenizer.ini
20-xdebug.ini -> /etc/php/mods-available/xdebug.ini
20-xsl.ini -> /etc/php/mods-available/xsl.ini
40-tideways.ini -> /etc/php/mods-available/tideways.ini

$ ls -l /etc/php/7.0/cli/conf.d/ | awk {'print $9" "$10" "$11'}
10-opcache.ini -> /etc/php/mods-available/opcache.ini
10-pdo.ini -> /etc/php/7.0/mods-available/pdo.ini
20-calendar.ini -> /etc/php/7.0/mods-available/calendar.ini
20-ctype.ini -> /etc/php/7.0/mods-available/ctype.ini
20-curl.ini -> /etc/php/mods-available/curl.ini
20-exif.ini -> /etc/php/7.0/mods-available/exif.ini
20-fileinfo.ini -> /etc/php/7.0/mods-available/fileinfo.ini
20-ftp.ini -> /etc/php/7.0/mods-available/ftp.ini
20-gettext.ini -> /etc/php/7.0/mods-available/gettext.ini
20-iconv.ini -> /etc/php/7.0/mods-available/iconv.ini
20-json.ini -> /etc/php/mods-available/json.ini
20-mcrypt.ini -> /etc/php/7.0/mods-available/mcrypt.ini
20-mongodb.ini -> /etc/php/mods-available/mongodb.ini
20-mysqli.ini -> /etc/php/mods-available/mysqli.ini
20-pdo_mysql.ini -> /etc/php/mods-available/pdo_mysql.ini
20-pdo_sqlite.ini -> /etc/php/mods-available/pdo_sqlite.ini
20-phar.ini -> /etc/php/7.0/mods-available/phar.ini
20-posix.ini -> /etc/php/7.0/mods-available/posix.ini
20-readline.ini -> /etc/php/mods-available/readline.ini
20-shmop.ini -> /etc/php/7.0/mods-available/shmop.ini
20-sockets.ini -> /etc/php/7.0/mods-available/sockets.ini
20-sqlite3.ini -> /etc/php/mods-available/sqlite3.ini
20-sysvmsg.ini -> /etc/php/7.0/mods-available/sysvmsg.ini
20-sysvsem.ini -> /etc/php/7.0/mods-available/sysvsem.ini
20-sysvshm.ini -> /etc/php/7.0/mods-available/sysvshm.ini
20-tokenizer.ini -> /etc/php/7.0/mods-available/tokenizer.ini
20-xdebug.ini -> /etc/php/mods-available/xdebug.ini
20-xsl.ini -> /etc/php/mods-available/xsl.ini

以下是如何使用PyYaml包将其读入numpy数组(该文件名为" temp.yaml"在我的示例中):

Array1:
- [1, 0, 0, 0]
- [2, 1, 0, 0]
- [3, 0.3333333333325028, 0, 0]
- [4, 0.6666666666657888, 0, 0]

Array2:
- [1, 1, 1, 1]
- [2, 3, 1, 1]
- [3, 2, 2, 2]
- [4, 3, 2, 2]
- [5, 1, 1, 3]
- [6, 1, 3, 4]
- [7, 1, 4, 2]