在python中导入一个数组

时间:2009-11-25 12:26:19

标签: python numpy

如何从文件中将数组导入python(numpy.arry),如果该文件尚不存在,则必须写入该文件。

例如,将矩阵保存到文件中然后将其加载回来。

5 个答案:

答案 0 :(得分:23)

查看numpy example list上的条目。这是.loadtxt()

上的条目
>>> from numpy import *
>>>
>>> data = loadtxt("myfile.txt")                       # myfile.txt contains 4 columns of numbers
>>> t,z = data[:,0], data[:,3]                         # data is 2D numpy array
>>>
>>> t,x,y,z = loadtxt("myfile.txt", unpack=True)                  # to unpack all columns
>>> t,z = loadtxt("myfile.txt", usecols = (0,3), unpack=True)     # to select just a few columns
>>> data = loadtxt("myfile.txt", skiprows = 7)                    # to skip 7 rows from top of file
>>> data = loadtxt("myfile.txt", comments = '!')                  # use '!' as comment char instead of '#'
>>> data = loadtxt("myfile.txt", delimiter=';')                   # use ';' as column separator instead of whitespace
>>> data = loadtxt("myfile.txt", dtype = int)                     # file contains integers instead of floats

答案 1 :(得分:8)

另一个选项是numpy.genfromtxt,例如:

import numpy as np
data = np.genfromtxt("myfile.dat",delimiter=",")

这将使data成为一个numpy数组,其行和列数与文件中的数量相同

答案 2 :(得分:1)

(我知道问题已经过时了,但我认为对于有类似问题的人来说这可能是一个很好的参考)

如果你想从ASCII /文本文件中加载数据(它具有或多或少的人类可读性并且易于在其他软件中解析),numpy.loadtxt可能就是你想要的:

如果您只想快速保存和加载文件中的numpy数组/矩阵,请查看numpy.save和numpy.load:

答案 3 :(得分:1)

在Python中,将一个裸的python列表存储为numpy.array,然后将其保存到文件中,然后将其加载回来,并将其转换回列表需要一些转换技巧。令人困惑的是因为python列表与numpy.arrays完全不同:

import numpy as np
foods = ['grape', 'cherry', 'mango']
filename = "./outfile.dat.npy"
np.save(filename, np.array(foods))
z = np.load(filename).tolist()
print("z is: " + str(z))

打印:

z is: ['grape', 'cherry', 'mango']

以文件名存储在磁盘上:outfile.dat.npy

此处的重要方法是tolist()np.array(...)转化功能。

答案 4 :(得分:0)

看看SciPy cookbook。它应该让您了解导入/导出数据的一些基本方法。

如果您从自己的Python程序中保存/加载文件,您可能还需要考虑Pickle模块或cPickle。