我有一个numpy字符数组,当我把它写入文件时,它写为:
['K' 'R' 'K' 'P' 'T' 'T' 'K' 'T' 'K' 'R' 'G' 'L']
我希望它只用字母写,不带括号或引号,即:
KRKPTTKTKRGL
我已经查看了numpy文档,从我收集到的解决方案是一个chararray然而它看起来不像普通数组那样功能。
任何帮助都会很棒。谢谢!
答案 0 :(得分:9)
如果您只是一个numpy数组,那么为什么不直接将它转换为字符串以写入您的文件?你可以使用str.join
来接受一个可迭代的(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
答案 1 :(得分:5)
您可以使用tostring()
的{{1}}方法作为:
numpy
由于您拥有>>> st = np.array(['K' 'R' 'K' 'P' 'T' 'T' 'K' 'T' 'K' 'R' 'G' 'L'])
>>> st.tostring()
'KRKPTTKTKRGL'
数组,因此此方法将比numpy
更快。
对于Python3x join()
可以用作:
tostring()
答案 2 :(得分:1)
"".join(['K' 'R' 'K' 'P' 'T' 'T' 'K' 'T' 'K' 'R' 'G' 'L'])
答案 3 :(得分:1)
以一种麻木的方式,您可以执行以下操作:
使用F字符串(仅适用于Python 3.4 +)
s = arr.view(f'U{arr.size}')[0]
使用默认字符串:
s = arr.view('U' + str(arr.size))[0]
在这两种方法中,我们都将数组转换为数组大小的可用unicode (check the kind
attribute at page bottom)格式。
如果您尝试将其转换为dtype
,则是字符串的numpy.array
In[15]: import numpy as np
In[16]: arr = np.array(['KRKPTTKTKRGL'])
In[17]: arr.dtype
Out[17]: dtype('<U12')
注意:它适用于非英文字母。
答案 4 :(得分:0)
如果使用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')