如何将数据字符串写入NumPy字符数组?

5 投票
3 回答
6876 浏览
提问于 2025-04-15 16:08

我想把一个数据字符串写入一个NumPy数组。伪代码如下:

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

示例结果:

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

我该如何用NumPy最自然和高效的方式做到这一点呢?

我不想用for循环、生成器或任何迭代的方式。能不能像伪代码那样用一个命令完成?

3 个回答

1

你可以试试Python里的array类型。它的开销比list要小一些。

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

其实用numpy.fromstring和numpy.fromiter的时候,没必要再去创建一个列表了。

3

只需要把你的文本明确地变成一个 list(而不是让它从Python中可迭代),这样 NumPy 就会自动识别了:

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

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

撰写回答