Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何仅将字典中的值选择/格式化为列表或numpy数组?_Python_Arrays_List_Dictionary - Fatal编程技术网

Python 如何仅将字典中的值选择/格式化为列表或numpy数组?

Python 如何仅将字典中的值选择/格式化为列表或numpy数组?,python,arrays,list,dictionary,Python,Arrays,List,Dictionary,我如何让它只打印一个平均值列表? 我只需要它与我的np格式完全相同 数组,以便比较它们是否相同 代码: 电流输出: {0: [array([16, 32]), array([20, 56])], 1: [array([2, 4])], 2: [array([17, 4]), array([45, 2]), array([45, 7]), array([32, 14]), array([68, 33])]} Average of Each Poi

我如何让它只打印一个平均值列表? 我只需要它与我的np格式完全相同 数组,以便比较它们是否相同

代码:

电流输出:

{0: [array([16, 32]), array([20, 56])],
 1: [array([2, 4])],
 2: [array([17,  4]),
     array([45,  2]),
     array([45,  7]),
     array([32, 14]),
     array([68, 33])]}

Average of Each Point
array({0: array([18, 44]), 1: array([2, 4]), 2: array([41, 12])}, dtype=object)
期望输出:

[[18,44],[2,4],[41,12]]
或者任何比较我的数组/列表的最佳格式。我知道我应该只使用一种数据类型。

您是否尝试通过最近质心的索引对数据点进行聚类,并找出聚类点的平均位置?如果是,我建议使用numpy的一些广播规则来获得所需的输出

想想这个,

np.linalg.normcentroids[None,:,:]-数据点[:,None,:],轴=-1 它创建一个矩阵,显示数据点和质心之间的所有距离

阵列[[40.01249805,11.18033989,11.40175425], [ 42.3792402 , 17.02938637, 16.2788206 ], [ 59.39696962, 43.01162634, 42.05948169], [ 55.97320788, 41.77319715, 40.79215611], [ 17.69180601, 20.80865205, 20.24845673], [ 41.72529209, 28.01785145, 27.01851217], [ 20.80865205, 44.01136217, 43.65775991], [ 65.9241989 , 66.48308055, 65.520989 ]] 你可以通过这个技巧计算最近质心的指数,为了可读性,它们被分成3行

In:t0=质心[None,:,:]-数据点[:,None,:] In:t1=np.linalg.normt0,轴=-1 In:t2=np.argmint1,轴=-1 现在t2有了指数

数组[1,2,2,2,0,2,0,2] 要查找1集群,请使用布尔掩码t2==0

In:dataPoints[t2==0] Out:array[[16,32], [20, 56]] In:dataPoints[t2==1] 输出:数组[[2,4]] In:dataPoints[t2==2] Out:array[[17,4], [45, 2], [45, 7], [32, 14], [68, 33]] 或者只是计算一下你的平均值

In:np.meansdatapoints[t2==0],axis=0 Out:数组[18,44] In:np.meansdatapoints[t2==1],axis=0 输出:数组[2,4] In:np.meansdatapoints[t2==2],axis=0 输出:数组[41.4,12] 当然,如果需要,后面的块可以在for循环中重写


在我看来,按照numpy的惯例来制定解决方案可能是一种很好的做法。

非常有效!正是我要找的!该程序一直运行良好,但我经常得到一个“空片平均值”错误。你介意帮我一点忙吗?另一位用户建议了一个可行的解决方案,但它并没有给my留下所需的集群数量。以下是该帖子的链接:
[[18,44],[2,4],[41,12]]