numpy.DataSource
class numpy.DataSource(destpath='.')
Класс DataSource() создает файловый объект из указанного источника данных.
Источником данных могут быть как локальные так и сетевые файлы, которые так же могут быть сжаты. Все низкоуровневые операции скрыты "под капотом", что довольно удобно, так как позволяет без лишней "возни", просто получить файловый объект.
-
- destpath - строка или None, (необязательный параметр).
- Задает путь к каталогу в который загружается исходный файл для дальнейшего использования. Если указано None, то будет создан временный каталог. По умолчанию используется текущий каталог.
-
- abspath(path) - возвращает абсолютный путь к файлу.
-
Если
path
это url-адрес, то будет возвращена строка с локальным местоположением файла или строка с местоположением, в котором данный файл будет существовать после открытия методомopen()
. Данный метод основан наos.path.abspath
. - exists(path) - проверяет наличие пути к указанному источнику данных.
-
Проверяет наличие пути к указанному источнику данных. Будет возвращено True если локальный файл существует или если файл либо доступен либо уже загруженн по url в директорию
path
классаDataSource
. - open(path[, mode, encoding, newline]) - открывает и возвращает файлоподобный объект (_io.TextIOWrapper).
-
- Если
path
является url-адресом, то он будет загружен и сохранен в каталоге, который указан в параметреpath
классаDataSource
и открыт оттуда. - Параметр
mode
(необязательный) определяет режим открытия файла и может принимать следующие значения: 'r' - для чтения (по умолчанию), 'w' - для записи, 'a' - для добавления. - Параметр
encoding
может быть либо None либо строкой с кодировкой, открываемого файла. По умолчанию будет соответствовать той кодировке, что указана вio.open
. - Параметр
newline
может быть либо None либо новой строкой при чтении текстового файла.
- Если
Примеры
Мне кажется, что данный пример не совсем удачен, так как выглядит довольно сложным и неуклюжим. Но имейте ввиду, что в определенных обстоятельствах и при некоторой сноровке, данный способ может оказаться намного удобнее чем остальные способы загрузки данных. Попробуем загрузить набор данных dots.csv пакета seaborn:
>>> import numpy as np
>>>
>>> data = np.DataSource('example')
>>>
>>>
>>> seaborn_dots = data.open('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/dots.csv')
>>> seaborn_dots
<_io.TextIOWrapper name='/home/n1/example/raw.githubusercontent.com/mwaskom/seaborn-data/master/dots.csv' mode='r' encoding='UTF-8'>
>>>
>>>
>>> np.loadtxt(seaborn_dots,
... dtype = np.dtype([('time','i2'),('coherence','f2'),('firing_rate','f4'),]),
... skiprows = 1, usecols=(2,3,4), delimiter = ',')
array([(-80, 51.2, 34.98757 ), (-60, 0. , 32.868526),
(-60, 3.2, 35.11905 ), ..., (300, 12.8, 28.51153 ),
(300, 25.6, 27.009804), (300, 51.2, 30.959303)],
dtype=[('time', '<i2'), ('coherence', '<f2'), ('firing_rate', '<f4')])