TypeError:scatter()得到参数'c'的多个值

问题描述 投票:0回答:1

我试图在我的MFCC阵列'signal_mfcc'上进行层次聚类,这是一个尺寸为(198,12)的ndarray。 198个音频帧/观察和12个系数/维度?

我使用随机阈值'250'和'距离'作为标准,如下所示:

    thresh = 250
    print(signal_mfcc.shape)
    clusters = hcluster.fclusterdata(signal_mfcc, thresh,    criterion="distance")

使用指定的阈值,输出变量'cluster'是序列[1 1 1 ... 1],长度为198或(198,),我假设将所有数据指向单个簇。然后,我使用pyplot用以下代码绘制scatter():

    # plotting
    print(*(signal_mfcc.T).shape)
    plt.scatter(*np.transpose(signal_mfcc), c=clusters)
    plt.axis("equal")
    title = "threshold: %f, number of clusters: %d" % (thresh) len(set(clusters)))
    plt.title(title)
    plt.show()

输出是:

    plt.scatter(*np.transpose(signal_mfcc), c=clusters)
    TypeError: scatter() got multiple values for argument 'c'

散点图不会显示。什么可能出错的线索?提前致谢!

numpy matplotlib scipy scatter-plot hierarchical-clustering
1个回答
0
投票

从这个SO Thread,你可以看到为什么你有这个错误。

Scatter documentation开始,c是第二个可选参数,第四个参数是total。此错误意味着您在np.transpose(signal_mfcc)上解压缩会返回超过4个项目。当你稍后定义c时,它定义了两次,它无法选择哪一个是正确的。

示例:

def temp(n, c=0):
    pass
temp(*[1, 2], c=1)
# Traceback (most recent call last):
#   File "<stdin>", line 1, in <module>
# TypeError: temp() got multiple values for argument 'c'
© www.soinside.com 2019 - 2024. All rights reserved.