如何从文件中将数组导入python(numpy.arry),如果该文件尚不存在,则必须写入该文件。
例如,将矩阵保存到文件中然后将其加载回来。
答案 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。