2013-03-29 69 views
1
ls_ord_symbols  = np.zeros((len(na_csv_orders), 1), dtype='S5') 

>>> print ls_ord_symbols 
[['AAPL'] 
['IBM'] 
['GOOG']] 

>>> print type(ls_ord_symbols) 
<type 'numpy.ndarray'> 
>>> print type(ls_ord_symbols[0]) 
<type 'numpy.ndarray'> 
>>> print ls_ord_symbols[0][0] 
AAPL 
>>> print type(ls_ord_symbols[0][0]) 
<type 'numpy.string_'> 
>>> print str(ls_ord_symbols[0][0]) 
AAPL 
>>> print type(str(ls_ord_symbols[0][0])) 
<type 'str'> 

問題>我需要提取存儲內numpy.array與原始類型的每個元素。這裏,ls_ord_symbols將字符串存儲在numpy.array中。如何從numpy的數組元素中提取

我不得不使用下面的方法來提取原始元素:

str(ls_ord_symbols[i][0]) 

是否有更好的方法來做到這一點給出的指數i?基本上,我希望簡單地獲得['AAPL','IBM','GOOG']或'AAPL','IBM','GOOG'列表作爲每個單獨的字符串,而迭代通過此numpy.array索引i

+0

看看'ls_ord_symbols.shape'。你可能會看到你有一個額外的維度,你不需要/想要。 – askewchan

+0

將字符串放入numpy數組時,「原始類型」會丟失,因爲numpy會將所有內容都轉換爲自己的優化類型。如果你想要一個普通的字符串,你需要自己轉換numpy類型(就像你用'str'所做的那樣)。 (爲什麼你需要它是一個「真正的」str?) – BrenBarn

+0

我只需要得到一個字符串列表並使用np.zeros來做到這一點。因爲我認爲[] .append(字符串)會很昂貴而且很慢。 – q0987

回答

0
#!/usr/bin/env python 
import numpy as np 
ls_ord_symbols = np.zeros((3, 1), dtype='S5') 
ls_ord_symbols[0,0] = 'AAPL' 
ls_ord_symbols[1,0] = 'IBM' 
ls_ord_symbols[2,0] = 'GOOG' 
mylist = [ls_ord_symbols[i,0] 
      for i in xrange(ls_ord_symbols.shape[0])] 
print repr(mylist) 
+0

看來我應該改用list.append。 – q0987

+0

這仍然是相同的類型,'numpy.string_' – askewchan