[英]Turn NumPy Array of characters into a string
我有一個numpy字符數組,當我把它寫入文件時,它寫為:
['K' 'R' 'K' 'P' 'T' 'T' 'K' 'T' 'K' 'R' 'G' 'L']
我希望它只用字母寫,沒有括號或引號,即:
KRKPTTKTKRGL
我已經看過numpy文檔,從我收集到的解決方案是一個chararray但是看起來它不像普通數組那樣功能。
任何幫助都會很棒。 謝謝!
如果您只有一個numpy數組,那么為什么不直接將它轉換為字符串以寫入您的文件? 你可以使用str.join
來接收一個iterable(list,numpy數組等)。
import numpy as np
arr = np.array(['K', 'R', 'K', 'P', 'T', 'T', 'K', 'T', 'K', 'R', 'G', 'L'])
s = ''.join(arr)
# KRKPTTKTKRGL
你可以使用numpy
tostring()
方法:
>>> st = np.array(['K' 'R' 'K' 'P' 'T' 'T' 'K' 'T' 'K' 'R' 'G' 'L'])
>>> st.tostring()
'KRKPTTKTKRGL'
由於你有一個numpy
數組,這個方法比join()
更快。
對於Python3x, tostring()
可以用作:
>>> st = np.array(['K','R','K','P','T','T','K','T','K','R','G','L'])
>>> st.astype('|S1').tostring().decode('utf-8')
'KRKPTTKTKRGL'
"".join(['K' 'R' 'K' 'P' 'T' 'T' 'K' 'T' 'K' 'R' 'G' 'L'])
以一種笨拙的方式,您可以:
使用F-String (僅適用於Python 3.4+)
s = arr.view(f'U{arr.size}')[0]
使用默認字符串:
s = arr.view('U' + str(arr.size))[0]
在兩者中,我們將數組轉換為可用的unicode (檢查頁面底部的kind
屬性)格式的數組大小。
這是dtype
的字符串,如果你試圖將其轉換為numpy.array
In[15]: import numpy as np
In[16]: arr = np.array(['KRKPTTKTKRGL'])
In[17]: arr.dtype
Out[17]: dtype('<U12')
注意:它適用於非英文字母。
如果使用tofile()
方法將數組保存到文件,則默認分隔符為空字符串""
。
所以如果你的陣列是這樣的,
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')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.