Python 将数据字符串写入NumPy字符数组?

Python 将数据字符串写入NumPy字符数组?,python,numpy,Python,Numpy,我想将数据字符串写入NumPy数组。伪代码: d = numpy.zeros(10, dtype = numpy.character) d[1:6] = 'hello' 示例结果: d= array(['', 'h', 'e', 'l', 'l', 'o', '', '', '', ''], dtype='|S1') 如何使用NumPy最自然、最有效地实现这一点 我不想要循环、生成器或任何迭代的。可以像使用伪代码一样使用一个命令完成吗?只需显式地将文本设置为一个列表(而不

我想将数据字符串写入NumPy数组。伪代码:

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

d=
  array(['', 'h', 'e', 'l', 'l', 'o', '', '', '', ''],
        dtype='|S1')
如何使用NumPy最自然、最有效地实现这一点


我不想要循环、生成器或任何迭代的
。可以像使用伪代码一样使用一个命令完成吗?

只需显式地将文本设置为一个
列表(而不是可以从Python中读取),并自动理解它:

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

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

当您使用numpy.fromstring和numpy.fromiter时,几乎不需要构建列表。

您可以尝试Python的
数组类型。它的开销不会像
列表
那样高

from array import array as pyarray
d[1:6] = pyarray('c', 'hello')

我尝试使用iter来避免巨大字符串的内存开销。你不会相信numpy所做的事情---d[1:6]=iter('hello')我在同一个数组中的不同位置写入了许多字符串。请注意,在Python 3中,这不起作用,因为尝试从字符串实例化字符数组是一种类型错误,你应该尝试使用
字节
。了解更多细节和解决方法。