TypeError:在数据集加载中,只有length1数组可以转换为Python标量

2024-10-03 23:21:11 发布

您现在位置:Python中文网/ 问答频道 /正文

对不起,我对这个社区很陌生。所以这个问题可能是微不足道的。 不管怎样,我已经创建了一个numpy矩阵。现在我想用meanshift算法来计算密度点。 不幸的是,我目前面临以下错误: TypeError:只有length-1数组可以转换为Python标量

    nygrid=np.zeros((2501,901), dtype=int)
       for x in range(0,39):
       in_file = "C:\Users\User\Desktop\Master en BIGDATA\Trabajo Fin de 
       master\Practica\Data Records\part-m-000" + '{:02d}'.format(x)
       for line in open(in_file):
      passen, forigen, corigen, fdest, cdest = line.split('\t')
      vPass=int(passen)
      vFOrigen=int(forigen)
      vCOrigen=int(corigen)
      vFDest=int(fdest)
      enter code herevCDest=int(cdest)
    nygrid[vFOrigen][vCOrigen]=nygrid[vFOrigen][vCOrigen]+vPass
    nygrid[vFDest][vCDest]=nygrid[vFDest][vCDest]+vPass

现在矩阵nygrid被加载

    from sklearn import datasets
    import mean_shift as ms
    model = ms.MeanShift(kernel_func=ms.gaussian_kernel, bandwidth=50, 
    seeds=500, n_jobs=-1)

创建变量列和行 列=nygrid[:,:901] 行=nygrid[:2501,:]

现在我要创建X和y,这个想法就是把矩阵的整行整列作为n个样本和中心传递 十、 y=datasets.make\ blobs数据集.make\ blobs(n\u samples=行,centers=列, 集群标准=np.随机.正态(1,.3,nаu簇)

现在我得到以下错误,意识到我不能将变量行和列作为n\u sample和centers传递。你知道吗

     X, y = datasets.make_blobs(n_samples=rows, centers=columns)

    File "C:\Users\User\Anaconda2\lib\site-
    packages\sklearn\datasets\samples_generator.py", line 752, in make_blobs
    n_samples_per_center = [int(n_samples // n_centers)] * n_centers

    TypeError: only length-1 arrays can be converted to Python scalars

可能是为了启动meanshift,逻辑不准确。但正如我告诉你的,我在这方面是全新的。你知道吗

事先谢谢你的帮助。你知道吗

安德里亚


Tags: inmakeline矩阵msintdatasetssamples
1条回答
网友
1楼 · 发布于 2024-10-03 23:21:11

我可以重现你的错误:

In [29]: int(np.array([1,2]))
                                     -
TypeError                                 Traceback (most recent call last)
<ipython-input-29-26c1a90e530a> in <module>()
  > 1 int(np.array([1,2]))

TypeError: only length-1 arrays can be converted to Python scalars

int(n_samples // n_centers)

n_samplesn_centers中的一个或两个都是数组。//是整数除法,结果是整数数组。尝试将其转换为一个整数是错误的(Pythonint函数就是这样做的)。不需要尝试这种转换。Plusastype(int)是将浮点数组转换为整数的正确方法。你知道吗

相关问题 更多 >