2013-12-12 2 views
0

мне нужно использовать некоторые матрицы в программах Python, какКак читать файл для импорта матрицы?

Q = np.matrix([[1,0,1,1,0], 
       [0,2,0,1,1], 
       [1,0,2,0,1], 
       [1,1,0,1,0], 
       [0,1,1,0,1]]) 

, и я хочу, чтобы импортировать матрицу (использование Numpy) из файла, так что я должен сделать, чтобы понять это? какой код я должен писать и какой файл использовать (.txt?). Я новичок в python, кто-нибудь может мне помочь? Заранее спасибо.

+0

Это зависит. Можете ли вы определить формат файла, или это уже существующие данные, с которыми вам приходится иметь дело? Если вы можете определить формат, нужно ли его читать или редактировать более важно, чем быть маленьким и быстрым? – abarnert

+0

Спасибо за ваш ответ. Это уже существующие данные, а только некоторые матрицы. Например, сохраните одну матрицу в файле, а затем в программах пусть Q будет матрицей. Если это может быть понятно для человека, это лучше. Я рассматриваю возможность использования формата .txt. Это очень сложно реализовать? – ilovecp3

+0

«Предварительно существующие данные», я имел в виду «вам нужно читать файлы, которые кто-то дал вам»? Если нет, то это очень легко реализовать. Если так ... это зависит от формата файла, который вам давался, но обычно это не сложно. – abarnert

ответ

3

Я предполагаю, что вы не только импортируете матрицы, но и экспортируете их в файлы в первую очередь.

Если это правда, существует несколько простых вариантов с различными компромиссами.


np.save сохраняет массив в двоичном формате, который использоваться только по NumPy. Но он очень быстрый и генерирует достаточно мелкие файлы.

np.save('matrix.npy', Q) 
Q = np.load('matrix.npy') 

np.savetxt сохраняет массив в текстовый файл, используя диалект CSV (с пробельных разделителей по умолчанию). Он медленнее и генерирует большие файлы, но если вы хотите читать или редактировать файлы (или отправлять их через ASCII-канал, например, электронную почту без вложений), это лучший вариант.

np.savetxt('matrix.txt', Q) 
Q = np.loadtxt('matrix.txt') 

np.savetxt может также сохранить массив в сжатом текстовом файле. Это дает вам небольшие файлы, но они медленнее сохранять и загружать. Они не являются непосредственно читаемыми человеком, но очень легко un-gzip файл, а затем у вас есть текстовый файл, который вы читаете и редактируете. может. Поэтому иногда это стоит того.

np.savetxt('matrix.txt.gz', Q) 
Q = np.loadtxt('matrix.txt.gz') 

Наконец, вы можете просто использовать сохранение стандартный Python и погрузочные механизмы, такие как pickle:

with open('matrix.pickle', 'wb') as f: 
    pickle.dump(Q, f) 
with open('matrix.pickle', 'rb') as f: 
    Q = pickle.load(f) 

Это действительно полезно только тогда, когда вам нужно хранить Numpy массивы вместе с не-NumPy объекты.


Если вы должны сохранить Множественные матриц, вместо сохранения один на один файл, вы можете захотеть взглянуть на savez и savez_compressed. Или, если вам нужны несколько объектов, только некоторые из них - NumPy, pickle - лучший вариант.

+0

Спасибо, это сработало! – ilovecp3

Смежные вопросы