2009-11-18 82 views
5

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

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

结果举例:

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

怎么可以这样最自然的和有效地与NumPy的呢?

我不想for循环,生成器或任何迭代。伪代码可以通过一个命令完成吗?

回答

3

就明确地使你的文字list(而不是它是迭代在Python)和NumPy会自动理解:

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

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

丑陋而不在位,但确实有效。谢谢。 – user213060 2009-11-18 22:22:35

+2

我试着用iter来避免巨大字符串的内存开销。你不会相信numpy做了什么--- d [1:6] = iter('hello') – user213060 2009-11-18 22:26:03

+0

omg,这就是为什么我告诉你首先使用一个列表... – Paul 2009-11-18 22:38:39

2

有一点需要建立一个列表,当你有numpy.fromstring和numpy的.fromiter。

+0

我写了很多字符串同一阵列上的不同位置。 – user213060 2009-11-25 15:08:52

1

你可以试试Python的array类型。它的开销不会高于list

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