2016-02-01 56 views
1

我想創建一個numpy數組與字符串組件。我已經使用了下面的命令,它的輸出顯示。Numpy數組與字符串組件

>>> a = np.full((2,2), 'hello', dtype='S5') 
>>> a 
array([[b'hello', b'hello'], 
     [b'hello', b'hello']], 
     dtype='|S5') 

你能解釋爲什麼數組組件顯示爲b'hello而不是'hello'?我期待陣列顯示爲:

>>> a 
array([['hello', 'hello'], 
     ['hello', 'hello']], 
    dtype='|S5') 

回答

0

我認爲這是由於你的dtype你可以轉換爲常用字符串bytes.decode。從docs

'S''a'(字節級)字符串

所以有字節串和字節串都表現出與b前綴,你也可以檢查你的elemets類型:

In [206]: type(a[0][0]) 
Out[206]: numpy.bytes_ 

對於從bytes轉換爲string

In [189]: [list(map(bytes.decode, i)) for i in a] 
Out[189]: [['hello', 'hello'], ['hello', 'hello']] 

或者你可以創建一個字符串unicodeU D型的數組:

a = np.full((2,2), 'hello', dtype='U5') 

In [191]: a 
Out[191]: 
array([['hello', 'hello'], 
     ['hello', 'hello']], dtype='<U5') 
+0

這是一個python3的問題,其中的字符串是正常的Unicode。 – hpaulj

+0

@hpaulj我不確定這是個問題。據我瞭解,這只是另一種行爲。 –

+0

'b'不出現在python2顯示中。如果dtype是'U5',則'u'。 – hpaulj