【发布时间】:2020-05-02 04:34:33
【问题描述】:
我在 Colaboratory 上练习 tesorflow,我的代码如下。
有一些问题,错误信息是
"TypeError: + 的不支持的操作数类型:'map' 和 'float'"
谁能告诉我怎么了?谢谢!
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(20)
y = map(lambda x: x + np.random.randn(1), x)
a, b = np.polyfit(x, y, 1)
plt.plot(x, y, 'o', np.arange(20), a*np.arange(20)+b, '-');**
【问题讨论】:
-
你在使用 Python 3 吗?您不能将
map对象传递给np.polyfit,它需要一个类似数组的对象。这和张量流有什么关系? -
请在发布错误消息时显示完整的回溯,或者至少说明它来自哪一行。顺便说一句,如果您将
y转换为list,那么它会在plt.plot和ValueError: x and y must have same first dimension中失败 -
@PingyaoChen:不,我不能,它要求我登录谷歌帐户。无论如何,该代码可能是为 Python 2 编写的,其中
map()返回一个列表对象,在 Python 3 中它返回一个map对象。 -
你是对的。我找到了答案。 Python2 是返回列表,Python3 是返回映射。所以需要添加一个列表来转换它。 y = list(map(lambda x: x + np.random.randn(1), x))
标签: python