numpy.loadtxt
- numpy.loadtxt(fname, dtype=<class 'float'>, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0, encoding=None, max_rows=None, *, quotechar=None, like=None)[source]
-
Загрузка данных из текстового файла.
- Параметры:
-
- fnamefile, str, pathlib.Path, список строк, генератор
-
Файл, имя файла, список или генератор для чтения. Если расширение имени файла является
.gzили.bz2, файл предварительно распаковывается. Обратите внимание, что генераторы должны возвращать байты или строки. Строки в списке или возвращаемые генератором обрабатываются как строки. - dtypeтип данных, необязательно
-
Тип данных результирующего массива; по умолчанию: float. Если это структурированный тип данных, результирующий массив будет одномерным, и каждая строка будет интерпретироваться как элемент массива. В этом случае число столбцов должно совпадать с числом полей в типе данных.
- commentsстрока или последовательность строк или None, необязательно
-
Символы или список символов, используемых для обозначения начала комментария. None означает отсутствие комментариев. Для обратной совместимости строковые байты будут декодированы как ‘latin1’. По умолчанию это ‘#’.
- delimiterстрока, необязательно
-
Символ, используемый для разделения значений. Для обратной совместимости строковые байты будут декодированы как ‘latin1’. По умолчанию – пробелы.
Изменено в версии 1.23.0: Поддерживаются только разделители из одного символа. Символы новой строки не могут использоваться в качестве разделителя.
- convertersсловарь или вызываемая функция, необязательно
-
Функции преобразования для настройки разбора значений. Если
convertersявляется вызываемой функцией, функция применяется ко всем столбцам, иначе она должна быть словарем, сопоставляющим номер столбца с функцией парсера. Для получения дополнительной информации см. примеры. По умолчанию: None.Изменено в версии 1.23.0: Была добавлена возможность передать одну вызываемую функцию для применения ко всем столбцам.
- skiprowsцелое число, необязательно
-
Пропустить первые
skiprowsстроки, включая комментарии; по умолчанию: 0. - usecolsцелое число или последовательность, необязательно
-
Столбцы для чтения, где 0 — первый. Например,
usecols = (1,4,5)извлекает второй, пятый и шестой столбцы. По умолчанию, None, читаются все столбцы.Изменено в версии 1.11.0: Когда необходимо прочитать один столбец, можно использовать целое число вместо кортежа. Например,
usecols = 3читает четвертый столбец так же, как иusecols = (3,). - unpackbool, необязательно
-
Если True, результирующий массив транспонируется, так что аргументы могут быть распакованы с помощью
x, y, z = loadtxt(...). При использовании структурированного типа данных возвращаются массивы для каждого поля. По умолчанию False. - ndminцелое число, необязательно
-
Возвращаемый массив будет иметь по меньшей мере
ndminизмерений. В противном случае одномерные оси будут сжаты. Допустимые значения: 0 (по умолчанию), 1 или 2.Добавлена в версии 1.6.0.
- encodingстрока, необязательно
-
Кодировка, используемая для декодирования входного файла. Не применяется к входным потокам. Специальное значение ‘bytes’ включает обходные пути обратной совместимости, гарантирующие получение массивов байтов в качестве результатов, если это возможно, и передаёт строки, закодированные в ‘latin1’, в функции преобразования. Переопределите это значение, чтобы получить массивы Юникод и передать строки в качестве входных данных в функции преобразования. Если установлено в None, используется системная по умолчанию. Значение по умолчанию — ‘bytes’.
Добавлена в версии 1.14.0.
Изменено в версии 2.0: Перед NumPy 2 значение по умолчанию было
'bytes'для совместимости с Python 2. Значение по умолчанию теперьNone. - max_rowsцелое число, необязательно
-
Прочитать
max_rowsстрок содержимого послеskiprowsстрок. По умолчанию читаются все строки. Обратите внимание, что пустые строки, не содержащие данных, такие как пустые строки и строки комментариев, не учитываются вmax_rows, в то время как такие строки учитываются вskiprows.Добавлена в версии 1.16.0.
Изменено в версии 1.23.0: Строки, не содержащие данных, включая строки комментариев (например, строки, начинающиеся с ‘#’ или как указано с помощью
comments) не учитываются вmax_rows. - quotecharсимвол Юникод или None, необязательно
-
Символ, используемый для обозначения начала и конца цитируемого элемента. Вхождения символов разделителя или комментария игнорируются внутри цитируемого элемента. Значение по умолчанию
quotechar=None, что означает, что поддержка цитирования отключена.Если обнаружены два последовательных экземпляра
quotecharвнутри цитируемого поля, первый обрабатывается как управляющий символ. См. примеры.Добавлена в версии 1.23.0.
- likearray_like, необязательно
-
Объект-ссылка для создания массивов, которые не являются массивами NumPy. Если в качестве
likeпередан массив-подобный объект, который поддерживает протокол__array_function__, результат будет определён им. В этом случае гарантируется создание объекта массива, совместимого с тем, который передан в этом аргументе.Добавлена в версии 1.20.0.
- Возвращает:
-
- outndarray
-
Данные, считанные из текстового файла.
См. также
-
load,fromstring,fromregex genfromtxt-
Загрузка данных с обработкой пропущенных значений, как указано.
scipy.io.loadmat-
читает файлы данных MATLAB
Примечания
Эта функция предназначена для быстрого чтения простых файлов с форматом. Функция
genfromtxtобеспечивает более сложную обработку, например, строк с пропущенными значениями.Каждая строка во входном текстовом файле должна иметь одинаковое количество значений, чтобы можно было прочитать все значения. Если у всех строк нет одинакового числа значений, можно прочитать подмножество до n столбцов (где n - минимальное количество значений, присутствующих во всех строках), указав столбцы с помощью
usecols.Добавлена в версии 1.10.0.
Строки, созданные методом Python float.hex, могут использоваться в качестве входных данных для чисел с плавающей точкой.
Примеры
>>> 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', '<i4'), ('weight', '<f4')])>>> 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.])Аргумент
convertersиспользуется для указания функций предварительной обработки текста перед анализом.convertersможет быть словарем, который сопоставляет функции предварительной обработки каждому столбцу:>>> 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.]])convertersможет быть вызываемой функцией вместо словаря, в этом случае она применяется ко всем столбцам:>>> s = StringIO("0xDE 0xAD\n0xC0 0xDE") >>> import functools >>> conv = functools.partial(int, base=16) >>> np.loadtxt(s, converters=conv) array([[222., 173.], [192., 222.]])Этот пример показывает, как
convertersможно использовать для преобразования поля с прицепленным знаком минус в отрицательное число.>>> 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', '<U12'), ('value', '<f8')])Цитируемые поля могут быть разделены несколькими пробелами:
>>> 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', '<U12'), ('value', '<f8')])Два последовательных символа кавычек внутри цитируемого поля обрабатываются как один экранированный символ:
>>> s = StringIO('"Hello, my name is ""Monty""!"') >>> np.loadtxt(s, dtype="U", delimiter=",", quotechar='"') array('Hello, my name is "Monty"!', dtype='<U26')Чтение подмножества столбцов, когда все строки не содержат одинаковое количество значений:
>>> 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.]])
© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/generated/numpy.loadtxt.html