numpy.genfromtxt
- numpy.genfromtxt(fname, dtype=<class 'float'>, comments='#', delimiter=None, skip_header=0, skip_footer=0, converters=None, missing_values=None, filling_values=None, usecols=None, names=None, excludelist=None, deletechars=" !#$%&'()*+, -./:;<=>?@[\\]^{|}~", replace_space='_', autostrip=False, case_sensitive=True, defaultfmt='f%i', unpack=None, usemask=False, loose=True, invalid_raise=True, max_rows=None, encoding=None, *, ndmin=0, like=None)[source]
-
Загрузка данных из текстового файла, с обработкой пропущенных значений в соответствии со спецификациями.
Каждая строка после первых
skip_headerстрок разбивается по символуdelimiter, а символы после символаcommentsотбрасываются.- Параметры:
-
- fnamefile, str, pathlib.Path, список строк, генератор
-
Файл, имя файла, список или генератор для чтения. Если расширение имени файла
.gzили.bz2, файл предварительно распаковывается. Обратите внимание, что генераторы должны возвращать байты или строки. Строки в списке или генерируемые генератором рассматриваются как строки. - dtypedtype, необязательно
-
Тип данных результирующего массива. Если None, типы данных будут определяться содержимым каждой колонки по отдельности.
- commentsstr, необязательно
-
Символ, обозначающий начало комментария. Все символы, идущие после символа комментария в строке, отбрасываются.
- delimiterstr, int или последовательность, необязательно
-
Строка, используемая для разделения значений. По умолчанию любые последовательные пробелы действуют как разделитель. Также может быть указано целое число или последовательность целых чисел, представляющие ширину(ы) каждого поля.
- skiprowsint, необязательно
-
skiprowsбыл удален в numpy 1.10. Пожалуйста, используйтеskip_headerвместо этого. - skip_headerint, необязательно
-
Количество строк, пропускаемых в начале файла.
- skip_footerint, необязательно
-
Количество строк, пропускаемых в конце файла.
- convertersпеременная, необязательно
-
Набор функций, преобразующих данные столбца в значение. Конвертеры также могут использоваться для предоставления значения по умолчанию для пропущенных данных:
converters = {3: lambda s: float(s or 0)}. - missingпеременная, необязательно
-
missingбыл удален в numpy 1.10. Пожалуйста, используйтеmissing_valuesвместо этого. - missing_valuesпеременная, необязательно
-
Набор строк, соответствующих пропущенным данным.
- filling_valuesпеременная, необязательно
-
Набор значений, используемых по умолчанию при отсутствии данных.
- usecolsпоследовательность, необязательно
-
Какие колонки читать, где 0 — первая. Например,
usecols = (1, 4, 5)извлечет 2-ю, 5-ю и 6-ю колонки. - names{None, True, str, последовательность}, необязательно
-
Если
namesравно True, имена полей читаются из первой строки после первыхskip_headerстрок. Эта строка может быть необязательно предваряема символом разделителя комментариев. Любое содержимое до разделителя комментариев отбрасывается. Еслиnamesявляется последовательностью или строкой с запятыми, имена полей будут использованы для определения имен полей в структурированном типе данных. Еслиnamesравно None, будут использованы имена полей типа данных, если они есть. - excludelistпоследовательность, необязательно
-
Список имен для исключения. Этот список добавляется к стандартному списку [‘return’,’file’,’print’]. Исключенные имена добавляются с символом подчеркивания: например,
fileстанетfile_. - deletecharsstr, необязательно
-
Строка, объединяющая недопустимые символы, которые должны быть удалены из имен.
- defaultfmtstr, необязательно
-
Формат для определения имён полей по умолчанию, например, “f%i” или “f_%02i”.
- autostripbool, необязательно
-
Автоматически удалять пробелы из переменных.
- replace_spaceсимвол, необязательно
-
Символ(ы), используемый для замены пробелов в именах переменных. По умолчанию используется ‘_’.
- case_sensitive{True, False, ‘upper’, ‘lower’}, необязательно
-
Если True, имена полей чувствительны к регистру. Если False или ‘upper’, имена полей преобразуются в верхний регистр. Если ‘lower’, имена полей преобразуются в нижний регистр.
- unpackbool, необязательно
-
Если True, возвращаемый массив транспонируется, чтобы аргументы можно было распаковать с помощью
x, y, z = genfromtxt(...). При использовании со структурированным типом данных возвращаются массивы для каждого поля. По умолчанию False. - usemaskbool, необязательно
-
Если True, возвращается массив с маской. Если False, возвращается обычный массив.
- loosebool, необязательно
-
Если True, не поднимать ошибки для недопустимых значений.
- invalid_raisebool, необязательно
-
Если True, при обнаружении несоответствия в количестве колонок генерируется исключение. Если False, выводится предупреждение, и нарушающие строки пропускаются.
- max_rowsint, необязательно
-
Максимальное количество строк для чтения. Не должно использоваться одновременно со skip_footer. Если задано, значение должно быть не менее 1. По умолчанию читается весь файл.
Доступно начиная с версии 1.10.0.
- encodingstr, необязательно
-
Кодировка, используемая для декодирования входного файла. Не применяется, когда
fnameявляется объектом файла. Специальное значение ‘bytes’ включает обходные пути обратной совместимости, гарантирующие, что вы получите массивы байтов, где это возможно, и передает строки с кодировкой latin1 в конвертеры. Переопределите это значение, чтобы получить массивы Юникод и передавать строки как входные данные конвертерам. Если установлено в None, используется системный по умолчанию. Значение по умолчанию — ‘bytes’.Доступно начиная с версии 1.14.0.
Изменено в версии 2.0: До NumPy 2, по умолчанию было
'bytes'для совместимости с Python 2. Значение по умолчанию теперьNone. - ndminint, необязательно
-
Тот же параметр, что и в
loadtxtДоступно начиная с версии 1.23.0.
- likearray_like, необязательно
-
Ссылка на объект для создания массивов, которые не являются массивами NumPy. Если переданный в
likeмассив-подобный объект поддерживает протокол__array_function__, результат будет определяться им. В этом случае обеспечивается создание объекта массива, совместимого с переданным через этот аргумент.Доступно начиная с версии 1.20.0.
- Возвращаемое значение:
-
- outndarray
-
Данные, прочитанные из текстового файла. Если
usemaskравно True, это массив с маской.
См. также
numpy.loadtxt-
эквивалентная функция, когда пропущенных данных нет.
Примечания
- При использовании пробелов в качестве разделителей или при отсутствии разделителя в качестве входных данных не должно быть пропущенных данных между двумя полями.
- При именовании переменных (либо с помощью гибкого типа данных, либо с помощью
namesпоследовательности) в файле не должно быть заголовка (в противном случае возникает исключение ValueError). - Индивидуальные значения по умолчанию не очищаются от пробелов. При использовании пользовательского преобразователя убедитесь, что функция удаляет пробелы.
- Пользовательские преобразователи могут получать неожиданные значения из-за обнаружения типа данных.
Ссылки
[1]Руководство пользователя NumPy, раздел Ввод/вывод с NumPy.
Примеры
>>> from io import StringIO >>> import numpy as np
Файл с разделителем запятая и смешанным типом данных
>>> s = StringIO("1,1.3,abcde") >>> data = np.genfromtxt(s, dtype=[('myint','i8'),('myfloat','f8'), ... ('mystring','S5')], delimiter=",") >>> data array((1, 1.3, b'abcde'), dtype=[('myint', '<i8'), ('myfloat', '<f8'), ('mystring', 'S5')])Использование dtype = None
>>> _ = s.seek(0) # needed for StringIO example only >>> data = np.genfromtxt(s, dtype=None, ... names = ['myint','myfloat','mystring'], delimiter=",") >>> data array((1, 1.3, 'abcde'), dtype=[('myint', '<i8'), ('myfloat', '<f8'), ('mystring', '<U5')])Указание dtype и имён
>>> _ = s.seek(0) >>> data = np.genfromtxt(s, dtype="i8,f8,S5", ... names=['myint','myfloat','mystring'], delimiter=",") >>> data array((1, 1.3, b'abcde'), dtype=[('myint', '<i8'), ('myfloat', '<f8'), ('mystring', 'S5')])Пример с колонками фиксированной ширины
>>> s = StringIO("11.3abcde") >>> data = np.genfromtxt(s, dtype=None, names=['intvar','fltvar','strvar'], ... delimiter=[1,3,5]) >>> data array((1, 1.3, 'abcde'), dtype=[('intvar', '<i8'), ('fltvar', '<f8'), ('strvar', '<U5')])Пример демонстрирующий комментарии
>>> f = StringIO(''' ... text,# of chars ... hello world,11 ... numpy,5''') >>> np.genfromtxt(f, dtype='S12,S12', delimiter=',') array([(b'text', b''), (b'hello world', b'11'), (b'numpy', b'5')], dtype=[('f0', 'S12'), ('f1', 'S12')])
© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/generated/numpy.genfromtxt.html