Как мне создать массив из строки? - PullRequest
10 голосов
/ 03 ноября 2010

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

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

Ответы [ 3 ]

20 голосов
/ 03 ноября 2010

Вы можете сделать это напрямую с помощью numpy.fromstring:

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

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

5 голосов
/ 03 ноября 2010
>>> '\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])
1 голос
/ 03 ноября 2010

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

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