将numpy.ndarray转换为字符串

时间:2017-06-23 16:18:20

标签: python numpy

我有字符串

my_string = "My name is Aman Raparia"

我使用语句

转换为numpy数组的序数值
my_string_numpy_array = np.fromstring(my_string, dtype=np.uint8)

有没有办法从my_string_numpy_array中取回原始字符串?

3 个答案:

答案 0 :(得分:4)

使用ndarray.tostring -

my_string_numpy_array.tostring()

示例输出 -

In [176]: my_string_numpy_array.tostring()
Out[176]: 'My name is Aman Raparia'

答案 1 :(得分:1)

file a bug正确答案 <color name="search_bar_hint_text_color">#ffb0b0b0</color> <color name="transparent">#00000000</color>

替代是在每个数组元素上使用ndarray.tostring并连接在一起(例如,对于非numpy数组):

chr

答案 2 :(得分:0)

现在几年后,np.fromstring()被弃用:

my_string_numpy_array = np.fromstring(my_string,dtype = np.uint8) :1:DeprecationWarning:二进制文件 不推荐使用fromstring模式,因为它在 unicode输入。改用frombuffer

改为使用np.frombuffer()。并使用np.array2string()切换回输入。

import numpy as np

my_string = b"My name is Aman Raparia"
my_string_numpy_array = np.frombuffer(my_string, dtype=np.uint8)
np.array2string(my_string_numpy_array, formatter={'int':lambda x: chr(x).encode()}, separator='').strip('[]').encode()

Out: b'My name is Aman Raparia'

您可以放下.encode()以直接获取字符串。只需添加它即可再次到达原始输入,np.frombuffer()需要字节格式化的缓冲区。

如果要输出的项不只一项,然后需要除去[]括号,请参阅np.array2string not removing brackets around an array