Python返回映射对象
我对python相当陌生,并在python书中介绍了机器学习。我举了一个例子Python返回映射对象,python,python-3.x,numpy,numpy-ndarray,Python,Python 3.x,Numpy,Numpy Ndarray,我对python相当陌生,并在python书中介绍了机器学习。我举了一个例子 min(datMat[:,0]) 应该会回来的 matrix([[-5.379713]]) 但我得到的是 matrix([[<map object at 0x000002130BF3E240>]], dtype=object) 我得到错误类型错误:不支持的操作数类型为-:“map”和“map” 这是我用来生成dataMat的代码 def loadDataSet(fileName): dat
min(datMat[:,0])
应该会回来的
matrix([[-5.379713]])
但我得到的是
matrix([[<map object at 0x000002130BF3E240>]], dtype=object)
我得到错误类型错误:不支持的操作数类型为-:“map”和“map”
这是我用来生成dataMat的代码
def loadDataSet(fileName):
dataMat = []
fr = open(fileName)
for line in fr.readlines():
curLine = line.strip().split('\t')
fltLine = map(float,curLine)
dataMat.append(fltLine)
return dataMat
我很难弄明白这一点。任何帮助都会很好 正如PM 2Ring在评论中所说的,您的书似乎在使用Python 2,而您在使用Python 3。在Python2中,map函数返回一个列表,但在Python3中,它返回一个map对象,除非您显式地将其转换为列表。您应该能够通过更改以下行使代码正常工作:
fltLine = map(float,curLine)
致:
正如pm2ring在评论中可能提到的,您的书似乎在使用python2,而您在使用python3。在Python2中,map函数返回一个列表,但在Python3中,它返回一个map对象,除非您显式地将其转换为列表。您应该能够通过更改以下行使代码正常工作:
fltLine = map(float,curLine)
致:
抱歉,我不知道您的问题的答案,但我怀疑这可能是Python2与Python3之间的问题,因为map的行为发生了变化。您使用的是哪个版本?python 3。。我也猜到了,但是很难解决这个问题。无论您使用什么代码来生成datMat,都有可能导致这里的问题。我们需要更多信息来帮助您调试。您好。。编辑了问题,这样更好。一旦我们能看到令人不快的代码,问题就显而易见了;抱歉,我不知道您的问题的答案,但我怀疑这可能是Python2与Python3之间的问题,因为map的行为发生了变化。您使用的是哪个版本?python 3。。我也猜到了,但是很难解决这个问题。无论您使用什么代码来生成datMat,都有可能导致这里的问题。我们需要更多信息来帮助您调试。您好。。编辑了问题,这样更好。一旦我们能看到令人不快的代码,问题就显而易见了;
fltLine = list(map(float,curLine))