python - 通过对数组进行分组的 Numpy 拆分数组
问题描述
有以下 2 个长度相等的数组。我的目标是将数组 B 拆分为由数组 A 定义的组。所以最后应该有 3 个数组或数组列表。数组的最终列表应包含数组 B 的以下行:
- 第一和第二
- 第三和第五
- 第四
顺序并不真正相关。
A = array([[-1],
[ 1],
[ 0],
[ 0],
[ 1]])
B = array([[ 624.5 , 548. ],
[ 912.8201, 564.3444],
[1564.5 , 764. ],
[1463.4163, 785.9251],
[1698.0757, 846.6306]])
通过使用 dbscan 集群功能,我遇到了这个问题。A 数组描述了数组 B 中点的簇 (0, 1)。值 -1 将该点声明为异常值。(使用的值并不精确)。我的目标是计算每个找到的集群的紧凑性......
解决方案
numpy_indexed包(免责声明:我是它的作者)的设计考虑了这些类型的用例。
import numpy_indexed as npi
C = npi.group_by(A).split(B)
不确定每个组的紧凑性是什么意思;但与其拆分并进行后续计算,通常直接计算组上的约简更有效;从而您可以重用分组对象以提高效率:
groups = npi.group_by(A)
mean = groups.mean(B)
std = groups.std(B)
推荐阅读
- python - python中字符串格式的替代方法是什么
- dagster - 定义在模块中时如何启动grpc服务器
- ios - Animation on view appear and disappear
- ios - How to listen opusCodec in AVPlayer?
- python - 如何用所有可能的组合替换字典中列表中的字符串
- c - Visual Studio Code Property Console not allowed error
- html - Shifting from login to register in html login page
- javascript - 在 Vue Scoped scss 上没有显示 Flex 属性,为什么?
- c# - 如何让游戏对象变得粗暴?
- node.js - 通过 openvpn 服务器路由 kubernetes 出去的流量