Поиск…


Сохранение и загрузка массивов numpy с использованием двоичных файлов

x = np.random.random([100,100])
x.tofile('/path/to/dir/saved_binary.npy')
y = fromfile('/path/to/dir/saved_binary.npy')
z = y.reshape(100,100)
all(x==z)
# Output:
#     True

Загрузка числовых данных из текстовых файлов с последовательной структурой

Функция np.loadtxt может использоваться для чтения csv-подобных файлов:

# File:
#    # Col_1 Col_2
#    1, 1
#    2, 4
#    3, 9
np.loadtxt('/path/to/dir/csvlike.txt', delimiter=',', comments='#')
# Output:
# array([[ 1.,  1.],
#        [ 2.,  4.],
#        [ 3.,  9.]])

Тот же файл можно прочитать с помощью регулярного выражения с помощью np.fromregex :

np.fromregex('/path/to/dir/csvlike.txt', r'(\d+),\s(\d+)', np.int64)
# Output:
# array([[1, 1],
#        [2, 4],
#        [3, 9]])

Сохранение данных в формате CSV в стиле ASCII

Аналоговый с np.loadtxt , np.savetxt можно использовать для сохранения данных в ASCII-файле

import numpy as np
x = np.random.random([100,100])
np.savetxt("filename.txt", x)

Для управления форматированием:

np.savetxt("filename.txt", x, delimiter=", " , 
    newline="\n", comments="$ ", fmt="%1.2f",
    header="commented example text")

Выход:

$ commented example text
0.30, 0.61, 0.34, 0.13, 0.52, 0.62, 0.35, 0.87, 0.48, [...]

Чтение файлов CSV

Доступны три основные функции (описание на страницах руководства):

fromfile - высокоэффективный способ чтения двоичных данных с известным типом данных, а также для разбора просто форматированных текстовых файлов. Данные, написанные с использованием метода tofile, могут быть прочитаны с использованием этой функции.

genfromtxt - загрузка данных из текстового файла с отсутствующими значениями, обрабатываемыми как указано. Каждая строка, прошедшая первые строки skip_header, делится на символ разделителя, а символы, следующие за символом комментариев, отбрасываются.

loadtxt - загрузка данных из текстового файла. Каждая строка в текстовом файле должна иметь одинаковое количество значений.

genfromtxt - это функция-обертка для loadtxt . genfromtxt является наиболее прямым для использования, поскольку он имеет множество параметров для работы с входным файлом.

Согласованное количество столбцов, согласованный тип данных (числовой или строковый):

Учитывая входной файл, myfile.csv с содержимым:

#descriptive text line to skip
1.0, 2, 3
4, 5.5, 6

import numpy as np
np.genfromtxt('path/to/myfile.csv',delimiter=',',skiprows=1)

дает массив:

array([[ 1. ,  2. ,  3. ],
       [ 4. ,  5.5,  6. ]])

Согласованное количество столбцов, смешанный тип данных (по столбцам):

1   2.0000  buckle_my_shoe
3   4.0000  margery_door

import numpy as np
np.genfromtxt('filename', dtype= None)


array([(1, 2.0, 'buckle_my_shoe'), (3, 4.0, 'margery_door')], 
dtype=[('f0', '<i4'), ('f1', '<f8'), ('f2', '|S14')])

Обратите внимание, что использование dtype=None приводит к повторному анализу.

Непоследовательное количество столбцов:

файл: 1 2 3 4 5 6 7 8 9 10 11 22 13 14 15 16 17 18 19 20 21 22 23 24

В массив одиночных строк:

result=np.fromfile(path_to_file,dtype=float,sep="\t",count=-1)


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow