我正在研究一种聚类算法的数据集,我需要根据距离对数据点进行排序 这里的数据类型为ndarray(n维数组)
import numpy as np
data = np.genfromtxt(fname="irisdataset.txt",delimiter="")
def sort_by_distance(data):
sum = 0
for point in data:
sum += point*point
return np.sqrt(sum)
sorted(data,key=[lambda x:sort_by_distance(x) for x in data])
我在这里收到错误:
Traceback (most recent call last):
File "C:/Users/abdullah/MainProject/load.py", line 13, in <module>
sorted(data,key=[lambda x:sort_by_distance(x) for x in data])
TypeError: 'list' object is not callable
我是python的新手,所以任何人都让我知道为什么我会收到此错误
答案 0 :(得分:2)
您收到错误是因为您将列表传递给sorted
的关键参数。但是sorted
期望关键参数是函数。
在不了解data
(它的结构)的情况下,很难说如何解决问题。我的猜测是data
看起来像这样:
data = np.array([[1, 2], [3, 4], ...])
并且您希望对每个&#34;点&#34;进行排序距离原点的距离。在这种情况下,np.dot
应该是一个很好的关键功能。
print sorted(data, key=np.dot)