Как создать массив numpy из string?

у меня есть считыватель файлов, который читает n bytes из файла и возвращает строку символов, представляющих эти (двоичные) данные. Я хочу почитать n байты в массив чисел numpy и запустить FFT на нем, но у меня возникли проблемы с созданием массива из строки. Пара строк примера будет потрясающе.

Edit: Я читаю необработанные двоичные данные, и поэтому строка, которую я получаю, выглядит как 'x01x05x03xff'.... Я хочу, чтобы это стало [1, 5, 3, 255].

3 ответов


вы можете сделать это прямо с numpy.fromstring:

import numpy as np
s = '\x01\x05\x03\xff'
a = np.fromstring(s, dtype='uint8')

после завершения этого, a и array([ 1, 5, 3, 255]) и вы можете использовать регулярные процедуры scipy / numpy FFT.


>>> '\x01\x05\x03\xff'
'\x01\x05\x03\xff'
>>> map(ord, '\x01\x05\x03\xff')
[1, 5, 3, 255]
>>> numpy.array(map(ord, '\x01\x05\x03\xff'))
array([  1,   5,   3, 255])

Не зная, что у вас есть, это сложно, но если бы это были целые числа с запятыми, вы могли бы сделать что-то вроде этого:

myInts = map(int, myString.split(','))