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

2023-12-20

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

Code:

import numpy as np
from pprint import pprint

centroids = np.array([[3,44],[4,15],[5,15]])
dataPoints = np.array([[2,4],[17,4],[45,2],[45,7],[16,32],[32,14],[20,56],[68,33]])

def size(vector):
    return np.sqrt(sum(x**2 for x in vector))

def distance(vector1, vector2):
    return size(vector1 - vector2)

def distances(array1, array2):
    lists = [[distance(vector1, vector2) for vector2 in array2] for vector1 in array1]
    #print lists.index(min, zip(*lists))
    smallest = [min(zip(l,range(len(l)))) for l in zip(*lists)]
    clusters = {}
    for j, (_, i) in enumerate(smallest):
        clusters.setdefault(i,[]).append(dataPoints[j])
    pprint (clusters)
    print'\nAverage of Each Point'
    avgDict = {}
    for k,v in clusters.iteritems():
        avgDict[k] = sum(v)/ (len(v))
    avgList = np.asarray(avgDict)
    pprint (avgList)

distances(centroids,dataPoints)

电流输出:

{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]]

或者比较我的数组/列表的最佳格式。我知道我应该只使用一种数据类型。


你是否尝试聚类dataPoints通过最近的索引centroids,并找出聚类点的平均位置?如果是,我建议使用 numpy 的一些广播规则来获取您需要的输出。

考虑到这一点,

    np.linalg.norm(centroids[None, :, :] - dataPoints[:, None, :], axis=-1)

它创建一个矩阵,显示之间的所有距离dataPoints and centroids,

    array([[ 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 = centroids[None, :, :] - dataPoints[:, None, :]
    In: t1 = np.linalg.norm(t0, axis=-1)
    In: t2 = np.argmin(t1, axis=-1)

Now t2有索引,

    array([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]
    Out: array([[2, 4]])

    In: dataPoints[t2 == 2]
    Out: array([[17,  4],
                [45,  2],
                [45,  7],
                [32, 14],
                [68, 33]])

或者只是计算你的情况的平均值,

    In: np.mean(dataPoints[t2 == 0], axis=0)
    Out: array([ 18.,  44.])

    In: np.mean(dataPoints[t2 == 1], axis=0)
    Out: array([ 2.,  4.])

    In: np.mean(dataPoints[t2 == 2], axis=0)
    Out: array([ 41.4,  12. ])

当然,如果需要,后面的块可以在 for 循环中重写。

在我看来,通过 numpy 的约定来制定解决方案可能是一个很好的做法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何仅选择/格式化字典中的值到列表或 numpy 数组中? 的相关文章

  • 使用 Django 的 post_save() 信号

    我有两张桌子 class Advertisement models Model created at models DateTimeField auto now add True author email models EmailField
  • Dask DataFrame 的逐行处理

    我需要处理一个大文件并更改一些值 我想做这样的事情 for index row in dataFrame iterrows foo doSomeStuffWith row lol doOtherStuffWith row dataFrame
  • 在 Python 中使用 sec 函数的反函数

    我正在创建一个程序 用于计算从一定高度范围和设定初始速度发射射弹的最佳角度 在我需要使用的最终方程中 存在一个反 sec 函数 它导致了一些麻烦 我已经导入了数学并尝试使用 asec 无论如何 但是数学似乎无法计算反秒函数 我也明白 sec
  • Python 中 genfromtxt() 的可变列数?

    我有一个 txt具有不同长度的行的文件 每一行都是代表一条轨迹的一系列点 由于每条轨迹都有自己的长度 因此各行的长度都不同 也就是说 列数从一行到另一行不同 据我所知 genfromtxt Python 中的模块要求列数相同 gt gt g
  • 无法包含外部 pandas 文档 Pycharm v--2018.1.2

    我无法包含外部 pandas 文档Pycharm v 2018 1 2 例如 numpy gt http docs scipy org doc numpy reference generated module name element na
  • 反加入熊猫

    我有两个表 我想附加它们 以便仅保留表 A 中的所有数据 并且仅在其键唯一时添加表 B 中的数据 键值在表 A 和 B 中是唯一的 但在某些情况下键将出现在表 A 和 B 中 我认为执行此操作的方法将涉及某种过滤联接 反联接 以获取表 B
  • 字典的嵌套列表

    我正在尝试创建dict通过嵌套list groups Group1 A B Group2 C D L y x 0 for y in x if y x 0 for x in groups d k v for d in L for k v in
  • 合并两个地图的最佳实践是什么

    如何将新地图添加到现有地图 地图具有相同的类型Map
  • 字典中列表中仅有的几个索引的总和

    如果我有这种类型的字典 a dictionary dog white 3 5 black 6 7 Brown 23 1 cat gray 5 6 brown 4 9 bird blue 3 5 green 1 2 yellow 4 9 mo
  • urllib2.urlopen() 是否实际获取页面?

    当我使用 urllib2 urlopen 时 我在考虑它只是为了读取标题还是实际上带回整个网页 IE 是否真的通过 urlopen 调用或 read 调用获取 HTML 页面 handle urllib2 urlopen url html
  • 根据对象变量搜索对象列表

    我有一个对象列表 这些对象具有三个变量 ID 名称和值 这个列表中可能有很多对象 我需要根据ID或Name找到一个对象 并更改值 例子 class objec public string Name public int UID public
  • 在 pip.conf 中指定多个可信主机

    这是我尝试在我的中设置的 etc pip conf global trusted host pypi org files pythonhosted org 但是 它无法正常工作 参考 https pip pypa io en stable
  • python中的sys.stdin.fileno()是什么

    如果这是非常基本的或之前已经问过的 我很抱歉 我用谷歌搜索但找不到简单且令人满意的解释 我想知道什么sys stdin fileno is 我在代码中看到了它 但不明白它的作用 这是实际的代码块 fileno sys stdin filen
  • Plotly:如何避免巨大的 html 文件大小

    我有一个 3D 装箱模型 它使用绘图来绘制输出图 我注意到 绘制了 600 个项目 生成 html 文件需要很长时间 文件大小为 89M 这太疯狂了 我怀疑可能存在一些巨大的重复 或者是由单个项目的 add trace 方法引起的 阴谋 为
  • Pandas 在特定列将数据帧拆分为两个数据帧

    I have pandas我组成的 DataFrameconcat 一行由 96 个值组成 我想将 DataFrame 从值 72 中分离出来 这样 一行的前 72 个值存储在 Dataframe1 中 接下来的 24 个值存储在 Data
  • PyQt 中的线程和信号问题

    我在 PyQt 中的线程之间进行通信时遇到一些问题 我使用信号在两个线程 发送者和监听者 之间进行通信 发送者发送消息 期望被监听者接收 但是 没有收到任何消息 谁能建议可能出了什么问题 我确信这一定很简单 但我已经环顾了几个小时但没有发现
  • 如何使用 Django (Python) 登录表单?

    我在 Django 中构建了一个登录表单 现在我遇到了路由问题 当我选择登录按钮时 表单不会发送正确的遮阳篷 我认为前端的表单无法从 查看 py 文件 所以它不会发送任何 awnser 并且登录过程无法工作 该表单是一个简单的静态 html
  • 如何在SqlAlchemy中执行“左外连接”

    我需要执行这个查询 select field11 field12 from Table 1 t1 left outer join Table 2 t2 ON t2 tbl1 id t1 tbl1 id where t2 tbl2 id is
  • 将此 MATLAB 代码转换为 Python 时我做错了什么?

    我正在努力将生成波形的 MATLAB 代码转换为 Python 就上下文而言 这是原子力显微镜带激发响应的模拟 与代码错误无关 在 MATLAB 中从 r vec 生成的图形与我在 Python 中生成的图形不同 我是否正确地将 MATLA
  • 将数组值导出到 csv 文件 java

    我只需要帮助将数组元素导出到 csv 文件 我不知道我的代码有什么问题 任何帮助将不胜感激 谢谢 for int index 0 index lt cols length index FileWriter fw new FileWriter

随机推荐

  • WPF 某些图像在加载时会旋转

    我是 WPF 新手 找不到解决方法 我有一个在 XAML 中定义的基本图像控件 我正在将位图图像动态加载到此控件 问题是 当加载图像控件时 某些位图在图像控件中翻转 并且我想以其默认方向加载所有图像 这是我的 XAML
  • Pyspark 与 Elasticsearch

    我将 Pyspark 与 Elasticsearch 结合使用 我注意到 当您创建 RDD 时 它不会在任何收集 计数或任何其他 最终 操作之前执行 当我将转换后的 RDD 的结果用于其他事情时 是否可以执行和缓存转换后的 RDD 正如我在
  • 正则表达式检测字符重复

    我使用表达式来检测字符串中重复的一个字符 if str replace g length gt 1 现在 我希望检测到多个重复的字符 例如 让我们尝试检测 或 的重复项 Wordwithone here match Word withdup
  • 如果未安装.NET 3.5,如何避免 FileNotFoundException?

    如果您尝试在未安装此版本 NET Framework 的 Windows 计算机上启动 NET 3 5 应用程序 您会收到FileNotFoundException对于某些系统程序集 例如 System Core 3 5 0 0 是否可以捕
  • 将 UIButton 旋转 360 度

    我一直在尝试运行一个旋转我的动画UIButton360 度使用此代码 UIView animateWithDuration 3 0 animations self vineTimeCapButton transform CGAffineTr
  • 将对象设置为 nil 时不会调用 dealloc 方法

    我有个问题 我首先创建了一个扩展 NSObject 的对象 我提供了描述和 dealloc 方法的重写 这是我的 Employee m 文件 implementation Employee NSString description retu
  • 错误:不兼容的类型:Fragment 无法转换为 MapFragment

    在我的项目中 我使用带有选项卡的导航抽屉 在其中一个选项卡中 我想调用谷歌地图 但我遇到了这个错误 Error incompatible types Fragment cannot be converted to MapFragment 包
  • .NET Core DI,为包注册默认实现

    如何使用 NET Core 的 IoC 容器注册默认实现 并提供一种覆盖现有实现的方法 例如 我可能想创建一个包 为某些服务提供默认实现 namesapce Package public interface ISomeService pub
  • 使用脚本打印 Google Sheet 中下拉列表中的所有选项 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有人有任何脚本可以让我使用 Google Sheet 中的应用程序脚本打印 Drop Down 中的
  • 如何跳过在 htmlwidgets::saveWidget() 中编写依赖项?

    当用plotly可视化数据时 我想将小部件编写为html文档 而不需要htmlwidgets saveWidget每次都编写依赖项 假设这些依赖项已经就位 以节省处理时间 小部件需要是独立的以节省磁盘空间 library plotly t
  • YouTube API 配额为零 [重复]

    这个问题在这里已经有答案了 我正在尝试使用 youtube api 来收集项目的一些数据 为此 我使用带有从电子邮件帐户获取的刷新令牌的微服务来生成 accessToken 但是 每当我使用生成的令牌时 我都会收到一条回复 说我已达到配额上
  • primefaces bar 图表自定义 x 轴

    我的应用程序中有 p barchart 图 类似于展示案例中的第二个条形图 http www primefaces org showcase ui barChart jsf http www primefaces org showcase
  • C++ 布尔值短路

    我是 C 新手 很好奇编译器如何处理布尔值的惰性求值 例如 if A 1 B 2 如果 A 等于 1 B 2 部分是否会被求值 No the B 2部分不予评价 这就是所谓的短路评估 http en wikipedia org wiki S
  • 在 Unity3D 中向着色器添加 alpha

    我对着色器编程一无所知 但现在我需要将 alpha 添加到我想要使用的着色器中 实际上我想淡入和淡出我的精灵 但它不在我使用的着色器中 Shader Shader Sprites ClipArea2Sides Properties Main
  • 如何将javascript中的数字格式化为两位小数?

    我需要在 JavaScript 中将数字格式化为两位小数 为了做到这一点 我使用 toFixed 方法 该方法工作正常 但在数字没有任何小数位的情况下 它不应显示小数点 例如10 00 应该只是 10 而不是 10 00 toFixed 将
  • 以 HTML 形式发送 jasperreport

    我在用JapserReports用于在 Java 中显示报告 我可以发送报告PDF格式到网络浏览器 现在我想将报告发送到HTML格式 以下是我发送报告的方法HTML format protected void processRequest
  • 使用 C++ 中的 openssl 以编程方式生成 CA 证书

    我想使用 openssl 和 C 生成 CA 证书 然后用它来签署证书 所以我实现了一个生成证书的函数 std shared ptr
  • 在主线程的镀铬块中同时录制视频和音频,导致音频无效

    所以 我认为这是一个相当有趣的问题 希望这不是一个棘手的问题 我有一个正在 Chrome 中录制的音频 视频 getUserMedia 流 单独来看 曲目录制得非常好 然而 当尝试同时记录两者时 其中一个会阻塞主线程 从而阻塞另一个线程 我
  • 如何处理后台和前台的 firebase 通知?

    我想在后台和前台处理 firebase 通知消息 我将发送一条消息 其中包含来自开发人员的 YouTube 链接 当用户点击通知栏时 它必须引导用户打开该链接 有谁知道它是如何完成的 public void onMessageReceive
  • 如何仅选择/格式化字典中的值到列表或 numpy 数组中?

    如何让它只打印平均值列表 我只需要它与我的 np 格式完全相同 数组 以便我可以比较它们以查看它们是否相同 Code import numpy as np from pprint import pprint centroids np arr