您的位置:首页 > 编程语言 > Python开发

Python2.7与Python3.6的不兼容性体现-Numpy.genfromtxt

2017-08-23 20:55 453 查看
Python3相比Python2而言,对str(字符串)和bytes(二进制)格式区分的更为严格。

如numpy库中的genfromtxt在2.7版本中:

import numpy as np

from io import StringIO

data = '1 2 3'

ndata = np.genfromtxt(StringIO(data), dtype= None, delimiter = ' ')

运行无误,ndata为字符串data经过自动拆分后所得到的array:[1,2,3]

但同样的代码在python3中会报错(已将io导入代码改为:from

StringIO import StringIO):

TypeError: must be str or None, not bytes

后查明是python3中的np.genfromtxt参数形式应为:

from io import BytesIO

ndata
= np.genfromtxt(BytesIO(data.encode('utf-8')), dtype= None, delimiter = ' ')

问题解决。

然而在打印numpy.array类型的ndata时:print(ndata),又提示错误:

TypeError: '>' not supported between instances of 'int' and 'str'

原来内置函数中需要比较字符串和整型的大小,这在python2中是支持的,然而python3中不支持,改为:

print(list(ndata))

问题解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: