我正在将代码从python2转换为python3。数组最初保存在python2中。作为我的一些代码的一部分,我加载了一个我保存的字符串数组。在python2中,我可以简单地将其加载为
arr = np.load("path_to_string.npy")
它给了我
arr = ['str1','str2' etc...]
然而,当我在python3中执行同样的操作时,它不起作用,我得到的是。你知道吗
arr = [b'str1',b'str2' etc...]
我认为这意味着字符串存储为不同的数据类型。我尝试使用以下方法转换它们:
arr = [str(i) for i in arr]
但这只会加剧问题。有人能解释一下为什么会发生这种情况以及如何解决它吗?我相信这是微不足道的,但我只是画一个空白?你知道吗
要清楚的是,如果它们在Python 2中是
str
,那么Python 3中的bytes
是“正确”的类型,因为它们都存储字节数据;如果您想要任意文本数据,则可以在Python 2中使用unicode
。你知道吗对于
numpy
,这确实是正确的行为;numpy
不希望以静默方式将面向字节的数据转换为面向文本的数据(除其他问题外,这样做将使内存使用量增加4倍,因为所有Unicode字符的固定宽度表示每个字符使用4个字节)。如果您真的想从bytes
更改为str
,可以显式地强制转换它,尽管它有点粗糙:相关问题 更多 >
编程相关推荐