TypeError:不可用类型:plt.scatter中的'numpy.ndarray'

时间:2018-02-19 05:57:21

标签: python python-3.x numpy matplotlib svm

我没有收到以下错误

  

TypeError:不可用类型:'numpy.ndarray'

我尝试了所有可能的解决方案,但我无法理解。

这是我的阵列:

instances=np.array([[0,10],
                            [1,3],
                            [3,4],
                            [3,5],
                            [5,5],
                            [5,6],
                            [6,-5],
                            [5,8]])

我在这里有一个循环:

for p in instances:                
    Pred=clf.predict([p])

    print(p[0])    
    print(Pred)

    plt.scatter(p[0], p[1], s=200, marker='*', c=self.colors[Pred])
return Pred

输出是这样的:

0    
[0.]

2 个答案:

答案 0 :(得分:1)

Pred是一个numpy数组。它不能用作self.colors[Pred]中的索引。您应该使用self.colors[int(Pred[0])]

答案 1 :(得分:0)

您没有发布错误的背景信息,但我假设它与this question中的内容相似。

然后改变:

    plt.scatter(p[0], p[1], s=200, marker='*', c=self.colors[Pred])

为:

    plt.scatter(p[0], p[1], s=200, marker='*', c=self.colors[Pred].ravel().tolist())

这会将数组y展平为一维,然后将其转换为列表,to_rgba很乐意将其消化为可以散列的内容。