numpy.loadtxt#
-
numpy.loadtxt(fname, dtype=
'float'> , comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0, encoding=None, max_rows=None, *, quotechar=None, like=None)[источник]# Загрузить данные из текстового файла.
- Параметры:
- fnameфайл, str, pathlib.Path, список строк, генератор
Файл, имя файла, список или генератор для чтения. Если расширение имени файла
.gzили.bz2, файл сначала распаковывается. Обратите внимание, что генераторы должны возвращать байты или строки. Строки в списке или созданные генератором обрабатываются как строки.- dtypeтип данных, опционально
Тип данных результирующего массива; по умолчанию: float. Если это структурированный тип данных, результирующий массив будет одномерным, и каждая строка будет интерпретироваться как элемент массива. В этом случае количество используемых столбцов должно соответствовать количеству полей в типе данных.
- комментарииstr или последовательность str или None, опционально
Символы или список символов, используемых для обозначения начала комментария. None означает отсутствие комментариев. Для обратной совместимости байтовые строки будут декодированы как 'latin1'. По умолчанию — '#'.
- разделительstr, optional
Символ, используемый для разделения значений. Для обратной совместимости байтовые строки будут декодированы как 'latin1'. По умолчанию — пробел.
Изменено в версии 1.23.0: Поддерживаются только разделители из одного символа. Символы новой строки не могут использоваться в качестве разделителя.
- конвертерыdict или callable, опционально
Функции преобразователя для настройки разбора значений. Если конвертеры является вызываемым, функция применяется ко всем столбцам, в противном случае это должен быть словарь, который сопоставляет номер столбца с функцией парсера. См. примеры для получения дополнительных сведений. По умолчанию: None.
Изменено в версии 1.23.0: Возможность передавать один вызываемый объект для применения ко всем столбцам была добавлена.
- skiprowsint, необязательный
Пропустить первый skiprows строк, включая комментарии; по умолчанию: 0.
- usecolsint или sequence, optional
Какие столбцы читать, где 0 — первый. Например,
usecols = (1,4,5)извлечёт 2-й, 5-й и 6-й столбцы. Значение по умолчанию, None, приводит к чтению всех столбцов.- распаковатьbool, необязательно
Если True, возвращаемый массив транспонируется, чтобы аргументы могли быть распакованы с помощью
x, y, z = loadtxt(...). При использовании со структурированным типом данных возвращаются массивы для каждого поля. По умолчанию False.- ndminint, необязательный
Возвращаемый массив будет иметь как минимум ndmin измерений. В противном случае одномерные оси будут сжаты. Допустимые значения: 0 (по умолчанию), 1 или 2.
- кодировкаstr, optional
Кодировка, используемая для декодирования входного файла. Не применяется к входным потокам. Специальное значение 'bytes' включает обходные пути для обратной совместимости, гарантирующие получение массивов байтов в качестве результатов, если возможно, и передачу строк, закодированных в 'latin1', конвертерам. Переопределите это значение для получения массивов Unicode и передачи строк в качестве входных данных конвертерам. Если установлено значение None, используется системное значение по умолчанию. Значение по умолчанию — None.
Изменено в версии 2.0: До NumPy 2 по умолчанию было
'bytes'для совместимости с Python 2. По умолчанию теперьNone.- max_rowsint, необязательный
Прочитайте max_rows строк содержимого после skiprows строк. По умолчанию читаются все строки. Обратите внимание, что пустые строки, не содержащие данных, такие как пустые строки и строки комментариев, не учитываются в max_rows, в то время как такие строки учитываются в skiprows.
Изменено в версии 1.23.0: Строки, не содержащие данных, включая строки комментариев (например, строки, начинающиеся с '#' или указанные через комментарии) не учитываются в max_rows.
- quotecharсимвол Unicode или None, опционально
Символ, используемый для обозначения начала и конца цитируемого элемента. Вхождения разделителя или символов комментария игнорируются внутри цитируемого элемента. Значение по умолчанию:
quotechar=None, что означает отключение поддержки кавычек.Если два последовательных экземпляра quotechar находятся внутри поля в кавычках, первый обрабатывается как escape-символ. См. примеры.
Новое в версии 1.23.0.
- какarray_like, необязательный
Объект-ссылка, позволяющий создавать массивы, которые не являются массивами NumPy. Если массивоподобный объект, переданный как
likeподдерживает__array_function__протокол, результат будет определен им. В этом случае он гарантирует создание объекта массива, совместимого с переданным через этот аргумент.Новое в версии 1.20.0.
- Возвращает:
- выходndarray
Данные, прочитанные из текстового файла.
Смотрите также
load,fromstring,fromregexgenfromtxtЗагрузка данных с обработкой пропущенных значений, как указано.
scipy.io.loadmatчитает файлы данных MATLAB
Примечания
Эта функция предназначена для быстрого чтения просто отформатированных файлов.
genfromtxtфункция обеспечивает более сложную обработку, например, строк с пропущенными значениями.Каждая строка во входном текстовом файле должна иметь одинаковое количество значений, чтобы можно было прочитать все значения. Если не все строки имеют одинаковое количество значений, подмножество до n столбцов (где n — наименьшее количество значений, присутствующих во всех строках) может быть прочитано путём указания столбцов через usecols.
Строки, созданные методом Python float.hex, могут использоваться в качестве входных данных для чисел с плавающей точкой.
Примеры
>>> import numpy as np >>> from io import StringIO # StringIO behaves like a file object >>> c = StringIO("0 1\n2 3") >>> np.loadtxt(c) array([[0., 1.], [2., 3.]])
>>> d = StringIO("M 21 72\nF 35 58") >>> np.loadtxt(d, dtype={'names': ('gender', 'age', 'weight'), ... 'formats': ('S1', 'i4', 'f4')}) array([(b'M', 21, 72.), (b'F', 35, 58.)], dtype=[('gender', 'S1'), ('age', '
>>> c = StringIO("1,0,2\n3,0,4") >>> x, y = np.loadtxt(c, delimiter=',', usecols=(0, 2), unpack=True) >>> x array([1., 3.]) >>> y array([2., 4.])
The конвертеры аргумент используется для указания функций предварительной обработки текста перед разбором. конвертеры может быть словарём, который сопоставляет функции предварительной обработки каждому столбцу:
>>> s = StringIO("1.618, 2.296\n3.141, 4.669\n") >>> conv = { ... 0: lambda x: np.floor(float(x)), # conversion fn for column 0 ... 1: lambda x: np.ceil(float(x)), # conversion fn for column 1 ... } >>> np.loadtxt(s, delimiter=",", converters=conv) array([[1., 3.], [3., 5.]])
конвертеры может быть вызываемым объектом вместо словаря, в этом случае он применяется ко всем столбцам:
>>> s = StringIO("0xDE 0xAD\n0xC0 0xDE") >>> import functools >>> conv = functools.partial(int, base=16) >>> np.loadtxt(s, converters=conv) array([[222., 173.], [192., 222.]])
Этот пример показывает, как конвертеры может использоваться для преобразования поля с завершающим знаком минус в отрицательное число.
>>> s = StringIO("10.01 31.25-\n19.22 64.31\n17.57- 63.94") >>> def conv(fld): ... return -float(fld[:-1]) if fld.endswith("-") else float(fld) ... >>> np.loadtxt(s, converters=conv) array([[ 10.01, -31.25], [ 19.22, 64.31], [-17.57, 63.94]])
Использование вызываемого объекта в качестве конвертера может быть особенно полезно для обработки значений с различным форматированием, например, чисел с плавающей запятой с подчёркиваниями:
>>> s = StringIO("1 2.7 100_000") >>> np.loadtxt(s, converters=float) array([1.e+00, 2.7e+00, 1.e+05])
Эта идея может быть расширена для автоматической обработки значений, указанных в многих различных форматах, таких как шестнадцатеричные значения:
>>> def conv(val): ... try: ... return float(val) ... except ValueError: ... return float.fromhex(val) >>> s = StringIO("1, 2.5, 3_000, 0b4, 0x1.4000000000000p+2") >>> np.loadtxt(s, delimiter=",", converters=conv) array([1.0e+00, 2.5e+00, 3.0e+03, 1.8e+02, 5.0e+00])
Или формат, где
-знак идет после числа:>>> s = StringIO("10.01 31.25-\n19.22 64.31\n17.57- 63.94") >>> conv = lambda x: -float(x[:-1]) if x.endswith("-") else float(x) >>> np.loadtxt(s, converters=conv) array([[ 10.01, -31.25], [ 19.22, 64.31], [-17.57, 63.94]])
Поддержка полей в кавычках включается с помощью quotechar параметр. Символы комментариев и разделителей игнорируются, когда они появляются внутри цитируемого элемента, ограниченного quotechar:
>>> s = StringIO('"alpha, #42", 10.0\n"beta, #64", 2.0\n') >>> dtype = np.dtype([("label", "U12"), ("value", float)]) >>> np.loadtxt(s, dtype=dtype, delimiter=",", quotechar='"') array([('alpha, #42', 10.), ('beta, #64', 2.)], dtype=[('label', '
Цитируемые поля могут быть разделены несколькими пробельными символами:
>>> s = StringIO('"alpha, #42" 10.0\n"beta, #64" 2.0\n') >>> dtype = np.dtype([("label", "U12"), ("value", float)]) >>> np.loadtxt(s, dtype=dtype, delimiter=None, quotechar='"') array([('alpha, #42', 10.), ('beta, #64', 2.)], dtype=[('label', '
Два последовательных символа кавычек внутри поля в кавычках трактуются как один экранированный символ:
>>> s = StringIO('"Hello, my name is ""Monty""!"') >>> np.loadtxt(s, dtype="U", delimiter=",", quotechar='"') array('Hello, my name is "Monty"!', dtype='
Чтение подмножества столбцов, когда все строки не содержат одинаковое количество значений:
>>> d = StringIO("1 2\n2 4\n3 9 12\n4 16 20") >>> np.loadtxt(d, usecols=(0, 1)) array([[ 1., 2.], [ 2., 4.], [ 3., 9.], [ 4., 16.]])