簡體   English   中英

將NumPy字符數組轉換為字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM