numpy.core.records.fromstring
numpy.core.records.fromstring(datastring, dtype=None, shape=None, offset=0, formats=None, names=None, titles=None, aligned=False, byteorder=None)
Функция core.records.fromstring() создает массив записей из двоичных данных, находящихся в строке.
-
- datastring - строка
- Строка с двоичными данными.
- dtype - тип данных NumPy (необязательный)
- Определяет тип данных выходного массива.
- shape - целое число, список или кортеж целых чисел
- Задает размеры необходимого массива - целое число или кортеж целых чисел.
- offset - целое число (необязательный)
- Задает смещение с которого начинается чтение буфера.
- formats - список типов данных (необязательный)
- Список (не кортеж) типов данных для каждого поля (столбца), например,
['U2','i2','f4','f2']
. Указание типов данных напрямую, например[int, complex, int, int, float]
не поддерживается. Учитывая, что символьные форматы типов данных несколько ограничены, рекомендуется использовать определение типов через классdtype
. - names - кортеж строк (необязательный)
- Определяет имя каждого поля массива записей.
- titles - кортеж строк (необязательный)
- Псевдонимы имен столбцов, которые могут использоваться для уточнения имен столбцов или их назначения. При этом имена и псевдонимы эквивалентны, например, если имя полей массива
a
['p', 'q']
, а псевдонимы полей['p_prime', 'q-prime']
, тоa['p']
эквивалентноa['p_prime']
. - aligned - True или False (необязательный)
- Выравнивает поля в памяти так же как это делает С-компилятор. По умолчанию aligned=False.
- byteorder - {‘<’, ‘>’, ‘=’} (необязательный)
- Определяет порядок байтов для всех полей.
-
- результат - массив записей NumPy
- Интерпретация двоичных данных в строке как массива записей.
Смотрите так же:
core.records.array
,
core.records.fromfile
,
core.records.fromarrays
,
core.records.fromrecords
Замечание
Двоичные данные в строке разделяются на поля в соответствии с количеством байтов отведенным под каждое поле, т.е. если формат записи определен как formats = ['i2', 'i2']
, то каждые 4 байта в строке будут интерпретироваться как одна запись массива.
Примеры
>>> a = b'\x01\x00\x02\x00'
>>> np.core.records.fromstring(a, formats = ['i2', 'i2'], names = 'x, y')
rec.array([(1, 2)],
dtype=[('x', '<i2'), ('y', '<i2')])
>>>
>>> a = b'\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00'
>>>
>>> rec1 = np.core.records.fromstring(a, formats = ['i2', 'i2'], names = 'x, y')
>>>
>>> rec1
rec.array([(1, 2), (3, 4), (5, 6)],
dtype=[('x', '<i2'), ('y', '<i2')])
>>>
>>> rec2 = np.core.records.fromstring(a, formats = ['i2', 'i4'], names = 'x, y')
>>> rec2
rec.array([(1, 196610), (4, 393221)],
dtype=[('x', '<i2'), ('y', '<i4')])
>>>
>>> rec1.x
array([1, 3, 5], dtype=int16)
>>>
>>> rec2.y
array([196610, 393221])