2009-11-18 85 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')