*:map和map不支持的操作数类型

时间:2018-02-12 12:15:11

标签: python

我正在尝试调试以下代码,我收到上述错误消息:TypeError:*支持的操作数类型*:'map'和'map'

我在网上做了公平的搜索,我明白广场操作不受支持,但我不能完全理解如何解决它。

我的代码如下:

mahalanobis = lambda p: distance.mahalanobis(p, means, covariances.T)
d = np.array(map(mahalanobis, data))  # Mahalanobis distance values 
d2 = d ** 2  # MD squared

方形计算中会弹出错误。所有数据类型都是numpy.ndarrays。

2 个答案:

答案 0 :(得分:5)

map转换为list

d = np.array(list(map(mahalanobis, data)))

答案 1 :(得分:0)

Python 3中,map()返回一个可迭代,而在Python 2中,返回一个列表。对python可迭代的任何数学运算,如平方(**),都会引发类似的错误。该行:

d2 = d ** 2

在Python 3中抛出上述错误,因为d是函数map()返回的可迭代对象。您可能正在使用Python3。因此,在进行任何数学运算之前,您需要将d转换为list,例如d = np.array(list(map(mahalanobis, data)))