Записать строку данных в массив символов NumPy? - PullRequest
5 голосов
/ 19 ноября 2009

Я хочу записать строку данных в массив NumPy. Псевдокод:

d = numpy.zeros(10, dtype = numpy.character)
d[1:6] = 'hello'

Пример результата:

d=
  array(['', 'h', 'e', 'l', 'l', 'o', '', '', '', ''],
        dtype='|S1')

Как это можно сделать наиболее естественно и эффективно с помощью NumPy?

Я не хочу for циклов, генераторов или чего-то итеративного. Можно ли это сделать одной командой, как с псевдокодом?

Ответы [ 3 ]

3 голосов
/ 19 ноября 2009

Просто явно сделайте ваш текст list (а не итеративным из Python), и NumPy автоматически поймет его:

>>> text = 'hello'
>>> offset = 1
>>> d[offset:offset+len(text)] = list(text)
>>> d

array(['', 'h', 'e', 'l', 'l', 'o', '', '', '', ''],
      dtype='|S1')
2 голосов
/ 24 ноября 2009

Нет необходимости создавать список, когда у вас есть numpy.fromstring и numpy.fromiter.

1 голос
/ 12 декабря 2009

Вы можете попробовать тип Python array. Он не будет иметь таких высоких издержек, как list.

from array import array as pyarray
d[1:6] = pyarray('c', 'hello')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...