2014-12-19 26 views
3

我有字符的numpy的陣列,當我把它寫到文件,它這樣寫道:打開人物與NumPy數組轉換成字符串

['K' 'R' 'K' 'P' 'T' 'T' 'K' 'T' 'K' 'R' 'G' 'L'] 

我希望它只有字母,沒有括號或寫報價即作爲:

KRKPTTKTKRGL 

我已經看過numpy的文件,從我收集到的解決方案是一個chararray但是看起來這並不像功能作爲一個正常的數組。

任何幫助將是偉大的。謝謝!

回答

3

您可以使用numpytostring()方法:

>>> st = np.array(['K' 'R' 'K' 'P' 'T' 'T' 'K' 'T' 'K' 'R' 'G' 'L']) 
>>> st.tostring() 
'KRKPTTKTKRGL' 

既然你有一個numpy陣列,這種方法會比join()更快。

對於Python3x tostring()可作爲:如果您使用tofile()方法來保存數組到文件

>>> st = np.array(['K','R','K','P','T','T','K','T','K','R','G','L']) 
>>> st.astype('|S1').tostring().decode('utf-8') 
'KRKPTTKTKRGL' 
+0

在Python 3中(不知道大約2)這創建了一個字節對象,而不是一個字符串。請注意,OP的數組可能在定義中包含逗號,否則它實際上是'np.array(['KRKPTTKTKRGL'])''。我懷疑缺少逗號就是因爲OP所說的打印到文件中。有關更多詳細信息,請參閱文檔[此處](http://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.tostring.html)。 – Ffisegydd

+0

Ffisegydd是正確的,這將無法正常工作 –

+0

我使用Python 2,此方法完美工作。它完全是我想要的。謝謝! – aatakan

6

如果你只是有一個numpy數組,那麼爲什麼不直接把它轉換成字符串來寫入你的文件呢?你可以使用str.join這個接受一個迭代(列表,numpy數組等)。

import numpy as np 

arr = np.array(['K', 'R', 'K', 'P', 'T', 'T', 'K', 'T', 'K', 'R', 'G', 'L']) 

s = ''.join(arr) 
# KRKPTTKTKRGL 
+0

這其實是正確的答案 –

+0

如果你能解釋的downvote,我很樂意編輯我的答案。 – Ffisegydd

1
"".join(['K' 'R' 'K' 'P' 'T' 'T' 'K' 'T' 'K' 'R' 'G' 'L']) 
0

,默認的分隔符是空字符串""

所以,如果你的陣列是這樣的,

st = np.array(['K', 'R', 'K', 'P', 'T', 'T', 'K', 'T', 'K', 'R', 'G', 'L']) 

那麼,如果你使用Python 2,

>>> st.tofile('myfile.txt') 

創建具有下列內容的文件:

KRKPTTKTKRGL 

如果您正在使用Python 3,您可能需要首先明確地將該陣列轉換爲S字符串類型:

>>> st.astype('|S1').tofile('myfile.txt')