2009-11-25 22 views
11

如何從文件中將數組導入到python(numpy.arry)中,以及如果文件不存在,必須編寫該文件。在python中導入數組

例如,將矩陣保存到文件中,然後將其加載回去。

回答

19

簽出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 
+0

你好,謝謝你的回答,我只能懷疑,因爲他定義了文件的路徑 – ricardo 2009-11-25 14:06:40

0

看看SciPy cookbook。它應該給你一些導入/導出數據的基本方法。

如果您從自己的Python程序保存/加載文件,您可能還需要考慮Pickle模塊或cPickle。

+1

酸洗不適合陣列 - 雖然你可以做到,但它會變得很慢。使用np.save()以.npy格式保存或使用np.savez()保存多個數組的壓縮歸檔文件。 – dwf 2009-11-26 04:09:20

1

(我知道這個問題是舊的,但我覺得這可能是件好事,作爲具有類似問題的人一個參考)如果你想從一個ASCII /文本文件加載數據(其中有利益

或或多或少的可讀性,並且容易在其它軟件解析),numpy.loadtxt可能是你想要什麼:

如果你只是想快速保存和加載numpy的陣列/矩陣來往於a文件,看看numpy.save和numpy.load:

7

另一種選擇是numpy.genfromtxt,如:

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

這將使data一個具有儘可能多的行和列的numpy數組,與您的文件中一樣多

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(...)轉換函數。