将NumPy字符数组转换为字符串

aat*_*kan 5 python arrays numpy chars

我有一个numpy字符数组,当我把它写入文件时,它写为:

['K' 'R' 'K' 'P' 'T' 'T' 'K' 'T' 'K' 'R' 'G' 'L']
Run Code Online (Sandbox Code Playgroud)

我希望它只用字母写,没有括号或引号,即:

KRKPTTKTKRGL 
Run Code Online (Sandbox Code Playgroud)

我已经看过numpy文档,从我收集到的解决方案是一个chararray但是看起来它不像普通数组那样功能.

任何帮助都会很棒.谢谢!

Ffi*_*ydd 9

如果您只有一个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
Run Code Online (Sandbox Code Playgroud)


Irs*_*hat 5

您可以使用以下tostring()方法numpy:

>>> st = np.array(['K' 'R' 'K' 'P' 'T' 'T' 'K' 'T' 'K' 'R' 'G' 'L'])
>>> st.tostring()
'KRKPTTKTKRGL'
Run Code Online (Sandbox Code Playgroud)

由于你有一个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' 
Run Code Online (Sandbox Code Playgroud)