首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在2Dnumpy数组中创建作为group-by样式查找的字典的最快方法?

在2D NumPy数组中创建作为group-by样式查找的字典的最快方法是使用numpy.unique函数和numpy.split函数结合。

首先,使用numpy.unique函数找到数组中的唯一值,并返回一个有序的数组。然后,使用numpy.split函数将原始数组拆分成多个子数组,其中每个子数组都包含相同的唯一值。接下来,使用字典推导式将唯一值作为键,将对应的子数组作为值创建字典。

下面是一个示例代码:

代码语言:txt
复制
import numpy as np

def create_groupby_dict(arr):
    unique_vals = np.unique(arr[:, 0])  # 找到第一列的唯一值
    split_arrs = np.split(arr[:, 1:], np.where(np.diff(arr[:, 0]) != 0)[0]+1)  # 根据第一列的唯一值进行拆分
    groupby_dict = {val: split_arr for val, split_arr in zip(unique_vals, split_arrs)}  # 创建字典
    return groupby_dict

# 示例用法
arr = np.array([[1, 2, 3],
                [1, 4, 5],
                [2, 6, 7],
                [2, 8, 9]])

result = create_groupby_dict(arr)
print(result)

输出结果为:

代码语言:txt
复制
{1: array([[2, 3],
           [4, 5]]), 
 2: array([[6, 7],
           [8, 9]])}

在这个例子中,我们创建了一个2D NumPy数组arr,并且以第一列的值进行分组。最终,我们得到一个字典,其中键为唯一的第一列的值,值为相应的子数组。

请注意,这种方法假设数组已经按照group-by的列进行排序。如果数组未排序,可以使用numpy.argsort函数对数组进行排序,以确保正确的分组。

这里没有提及任何云计算品牌商的相关产品和链接地址。如果您有关于其他云计算问题的咨询,欢迎继续提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Kylin、Druid、ClickHouse该如何选择?

Kylin小结 适用于聚合查询场景;因为数据预聚合,Kylin可以说是最快查询引擎(group-by查询这样复杂查询,可能只需要扫描1条数据);Kylin查询效率取决于是否命中CuboId,查询波动较大...pv索引 通过索引pv列查找到相应行,并做agg 后续计算 3....Druid小结 Druid适用于聚合查询场景但是不适合有超高基维度场景;存储全维度group-by数据,相当于只存储了Kylin CubeBase-CuboID;每个维度都有创建索引,所以每个查询都很快...mark’s number集合(即数据block集合) 在上一步骤blockdate和city列查找对应行号集合,并做交集,确认行号集合 将行号转换为mark’s number和offset...对于反向查找,只有查找条件匹配最左前缀时候,才能剪枝掉大量数据,其它时候并不高效。 2.

1.1K20

Klin、Druid、ClickHouse核心技术对比

KYLIN小结:适用于聚合查询场景;因为数据预聚合,Kylin可以说是最快查询引擎(group-by查询这样复杂查询,可能只需要扫描1条数据);kylin查询效率取决于是否命中CuboId,查询波动较大...pv索引 通过索引pv列查找到相应行,并做agg 后续计算 DRUID小结:Druid适用于聚合查询场景但是不适合有超高基维度场景;存储全维度group-by数据,相当于只存储了KYLIN...CubeBase-CuboID;每个维度都有创建索引,所以每个查询都很快,并且没有类似KYLIN巨大查询效率波动。...mark’s number集合(即数据block集合) 在上一步骤 blockdate和city列查找对应行号集合,并做交集,确认行号集合 将行号转换为mark’s number 和...对于反向查找,只有查找条件匹配最左前缀时候,才能剪枝掉大量数据,其它时候并不高效。

1.4K10
  • Kylin、Druid、ClickHouse 核心技术对比

    Kylin小结:适用于聚合查询场景;因为数据预聚合,Kylin可以说是最快查询引擎(group-by查询这样复杂查询,可能只需要扫描1条数据);kylin查询效率取决于是否命中CuboId,查询波动较大...pv索引 通过索引pv列查找到相应行,并做agg 后续计算 Druid小结:Druid适用于聚合查询场景但是不适合有超高基维度场景;存储全维度group-by数据,相当于只存储了KYLIN...Cube Base-CuboID;每个维度都有创建索引,所以每个查询都很快,并且没有类似KYLIN巨大查询效率波动。...mark's number集合(即数据block集合) 在上一步骤 blockdate和city列查找对应行号集合,并做交集,确认行号集合 将行号转换为mark's number 和...对于反向查找,只有查找条件匹配最左前缀时候,才能剪枝掉大量数据,其它时候并不高效。

    1.8K20

    大话 Druid 存储结构

    为了方便阐述数据格式,本文以一个广告效果分析作为例子进行分析,图1是样例数据,请一定注意它是聚合后数据,而不是原始数据。 ?...字典 字典是将列所有值去重,然后按照字典顺序排序值组成数组,虽然字典只存储了排序后维度值,但是它还隐含了另一个信息,那就是每个维度值编码值,编码值就等于数组下标。...编码后维度值 Druid是一个预聚合方案,但是其聚合不是按照一个维度group-by聚合,而是按照所有维度group-by聚合,对于图1数据已经是按照聚合过了。...为了保证单一值磁盘能快速定位,整个维度范围内这些整数需要是定长,因为定长元素组成数组可以通过计算直接定位到某一个元素。...Druid对线性非定长存储结构有这大量应用,它遵循图6总结,只是元数据部分稍有不同,现总结如下: version:占用 1byte allowReverseLookup:1byte ,是否允许反向查找

    60330

    做olap一定要要了解Druid存储结构

    为了方便阐述数据格式,本文以一个广告效果分析作为例子进行分析,图1是样例数据,请一定注意它是聚合后数据,而不是原始数据。 ?...02 字典 字典是将列所有值去重,然后按照字典顺序排序值组成数组,虽然字典只存储了排序后维度值,但是它还隐含了另一个信息,那就是每个维度值编码值,编码值就等于数组下标。...03 编码后维度值 Druid是一个预聚合方案,但是其聚合不是按照一个维度group-by聚合,而是按照所有维度group-by聚合,对于图1数据已经是按照聚合过了。...为了保证单一值磁盘能快速定位,整个维度范围内这些整数需要是定长,因为定长元素组成数组可以通过计算直接定位到某一个元素。...Druid对线性非定长存储结构有着大量应用,它遵循图6总结,只是元数据部分稍有不同,现总结如下: version:占用 1byte allowReverseLookup:1byte ,是否允许反向查找

    1.6K30

    GitHub 热榜:这款 Python 工具火了,可对社群结构进行可视化、检测

    这一次,功能是针对图聚类问题社群结构进行检测、可视化。 ? 该项目的帖子 reddit 上一经发布,就被顶到了 “机器学习板块” 榜首。 ?...最终,让整个社群网络呈现出一种模块聚集结构,实现整个社群网络模块度最大化。 所以首先,我们需要构建一个表示无向图邻接矩阵,可以加权,也可以不加权,矩阵为 2Dnumpy 数组。...: adj_matrix (numpy.ndarray):图邻接矩阵; frames (list):算法每次迭代字典列表; 每个字典都有俩个键:“C” 包含节点到社群查找表,“Q” 表示图模块度数值...我们可以看到 Louvain 算法动态过程: 首先扫描数据所有节点,将每个节点看做一个独立社群; 接下来,遍历每个节点邻居节点,判断是否将该节点加入邻居节点所在社群,以提升模块度; 这一过程重复迭代...,直到每一个节点社群归属稳定; 最后,将所有同一个社群节点压缩成一个新节点,计算新节点权重,直到整个图模块度稳定。

    78910

    标记扩展(Markup Extension)

    此扩展最常用于样式和模板。 x:Array 通过标记扩展提供对 XAML 对象数组一般支持。需要注意是, XAML 2009 ,x:Array定义为语言基元而不是标记扩展。...查找该资源行为类似于加载时查找,将查找当前 XAML 页面先前标记以及其他应用程序源中加载资源,并将生成该资源值作为运行时对象属性值。...RelativeSource 设置 XAML 创建 Binding 元素 RelativeSource 属性时使用。.... /> ComponentResourceKey 定义和引用从外部程序集加载资源键。 这使资源查找能够程序集中指定目标类型,而不是程序集中或类上指定显式资源字典。...ThemeDictionary 为集成第三方控件自定义控件创作者或应用程序提供一种方法,用于加载要在设置控件样式时使用特定于主题资源字典

    38830

    2021-05-28

    ,公开数组接口任何对象,__array__方法返回数组对象,或任何(嵌套)序列。...np.array()作用就是按照一定要求将object转换为数组。 ② dtype:可选参数,用来表示数组元素类型。如果没有给出,那么类型将被确定为保持序列对象所需最小类型。...Python 类特殊方法__getitem__ 凡是定义了这个__getitem__ 方法,那么它实例对象(假定为p),可以像这样 p[key] 取值,当实例对象做p[key] 运算时,会调用类方法...字典in 操作符 作用:用于判断键是否存在于字典,如果键字典 dict 里返回 true,否则返回 false。 语法: key in dict 参数:key -- 要在字典查找键。...返回值:如果键字典里返回true,否则返回false。 10. np.empty()函数 作用: 创建一个没有任何具体值ndarray数组,是创建数组最快方法

    58000

    寻找性能更优秀不可变小字典

    Dictionary 是一个很常用键值对管理数据结构。但是性能要求严苛情况下,字典查找速度并不高。所以,我们需要更快方案。...因此,如果我们有办法使用连续数字作为下标,以及一个数组。就可以 C# 自己实现跳表。...知识要点 使用表达式创建委托 PropertyInfo 有一个 int MetadataToken 属性,根据目前观察,可以知道一个类型属性其 MetadataToken 似乎是连续,因此可以取模后作为跳表...所谓跳表,可以简单理解为,使用数组下标来定位数组特定元素。 实现代码 这里,我们直接给出基准测试中使用代码。...数组跳表是非直接方案中最快

    39500

    【数据结构】实现字典API:有序数组和无序链表

    所以代码默认不能选择 -1作为 Key或者Value (实际场景,我们会将int类型Key替换为实现Compare接口对象,同时将“失败”时返回值从-1设为null,这时是没有这个问题)...对查找表经常进行操作有: 查询某个特定数据是否查找 检索某个特定数据元素各种属性 查找插入一个数据元素 从查找删除某个数据元素 若对查找表只做1,2两种查找操作, 这样查找表被称为...“静态查找表” 若在查找过程同时还进行了3,4操作, 这样查找表被称为“动态查找表” 有序数组实现字典 有序数组实现字典思路 字典,有最关键两个类型值: Key和Value。...每次操作同步两个数组状态以有序数组插入键值对作为例(put) ?...换句话说,从0增长字典长度赶上了当前数组长度。 因为java数组长度创建后不可调,所以我们要新建一个更大数组,将原来数组元素拷贝到新数组里面去。

    1.2K50

    Python 升级之路( Lv3 ) 序列

    前面学习很多字符串方法列表也有类似的用法,几乎一模一样。...# 1. append()方法 原地修改列表对象,是真正列表尾部添加新元素,速度最快,推荐使用 a = [20, 40] # 此列表创建可以重写为列表文字 a.append(80) print(...也可以使用生成器对象 __next__() 方法进行遍历,或者直接作为迭代器对象来使用。...直到找到为空bucket将键值对放进去. 流程图如下: 字典扩容 python会根据散列表拥挤程度扩容。“扩容”指的是:创造更大数组,将原有内容拷贝到新数组。...假设数组长度为8,我们可以拿计算出散列值最右边3位数字作为偏移量,即 101 ,十进制是数字5。 我们查看偏移量5,对应 bucket 是否为空。如果为空,则返回 None 。

    2.9K21

    怎样JavaScript创建和填充任意长度数组

    没有空洞数组往往表现得更好 大多数编程语言中,数组是连续值序列。 JavaScript ,Array 是一个将索引映射到元素字典。...密集数组往往表现更好,因为它们可以连续存储(内部)。一旦出现了空洞,内部表示就必须改变。我们有两种选择: 字典查找时会消耗更多时间,而且存储开销更大。 连续数据结构,对空洞进行标记。...某些引擎,例如V8,如果切换到性能较低数据结构,这种改变将会是永久性。即使所有空洞都被填补,它们也不会再切换回来了。...空洞默认值一般不会是元素初始“值”。常见默认值是零。 `Array` 构造函数后面加上 `.fill()` 方法 .fill()方法会更改当前 Array 并使用指定值去填充它。...提示:一般来说数组性能无关紧要 对于大多数情况,我不会过分担心性能。即使是带空洞数组也很快。使代码易于理解更有意义。 另外引擎优化方式和位置也会发生变化。今天最快方案可能明天就不是了。

    3.2K30

    使用泛型委托,构筑最快通用属性访问器

    /artech/archive/2011/03/26/Propertyaccesstest.html ,文中测试结果说明,使用委托是最快方式,但是原文进做了原理性说明,代码不通用,于是参照原文方法...听说.net字典查找性能不够高,继续写段测试代码跑跑看: (注:测试代码增加了相应NoCache方法,代码如下: public static GetPropertyValue CreateGetPropertyValueDelegateNoCache...,另外也证明了,字典查找性能的确不高。...这个测试字典元素数量是较少,有朋友提示,可能是计算字典Key哈希耗费了较多性能,于是将缓存字典长度改小成DGP-{0}-{1} 和 DSP-{0}-{1},再次进行测试: =========...obj 有效,除非这是静态属性,它并不能作为一个通用类型属性访问器,所以将它缓存意义不大,但可以作为优化属性访问一个手段。

    90490

    Swift基础 集合类型

    收藏品可变性 如果您创建一个数组、集合或字典,并将其分配给变量,则创建集合将是可变。这意味着您可以集合创建后通过添加、删除或更改集合项目来更改(或突变)。...如果您将数组、集合或字典分配给常量,则该集合是不可变,其大小和内容无法更改。 注意 集合不需要更改所有情况下,创建不可变集合是良好做法。...这样做使您更容易对代码进行推理,并使Swift编译器能够优化您创建集合性能。 数组(Arrays) 数组将相同类型值存储在有序列表。相同值可以不同位置多次出现在数组。...当您需要根据它们标识符查找值时,您可以使用字典,就像使用现实世界字典查找特定单词定义一样。...字典上迭代 您可以使用for-in循环迭代字典键值对。

    10500

    Python3外置模块使用

    [TOC] 0x00 快速入门 (1)外置模块一览表 描述:Python外置模块可以说是Python强大之处存在,使得Python语言扩展性高,使用方法众多并且使用也非常简单,我们日常运维开发学习尤为重要...]) #方法用于添加一个新工作表,sheetname为工作表名称,默认是sheet1 format=obj.add_format([properties]) #方法用于工作表创建一个新格式对象来格式化单元格...chart=obj.add_chart(options) #用于工作表创建一个图表对象,内部是通过insert_chart()方法来实现,参数为dict类型是为图标指定一个字典属性 obj.close...#简化不同数据类型写入过程,write方法作为其他更加具体数据类型方法别名 write_row('A1',写入数据(单个字符/数组),格式化类型) #从A1开始写入一行 write_cloumn...:雷达样式图表 #插入到指定位置 chart.add_series(options) #用于添加一个数据系列图表参数options为字典类型,用于设置图表系列选项字典 #常用方法: categories

    3.5K30

    Python3外置模块使用

    [TOC] 0x00 快速入门 (1)外置模块一览表 描述:Python外置模块可以说是Python强大之处存在,使得Python语言扩展性高,使用方法众多并且使用也非常简单,我们日常运维开发学习尤为重要...]) #方法用于添加一个新工作表,sheetname为工作表名称,默认是sheet1 format=obj.add_format([properties]) #方法用于工作表创建一个新格式对象来格式化单元格...chart=obj.add_chart(options) #用于工作表创建一个图表对象,内部是通过insert_chart()方法来实现,参数为dict类型是为图标指定一个字典属性 obj.close...#简化不同数据类型写入过程,write方法作为其他更加具体数据类型方法别名 write_row('A1',写入数据(单个字符/数组),格式化类型) #从A1开始写入一行 write_cloumn...:雷达样式图表 #插入到指定位置 chart.add_series(options) #用于添加一个数据系列图表参数options为字典类型,用于设置图表系列选项字典 #常用方法: categories

    4.6K20

    .NET泛型集合

    所以如果知道我们将要用这个集合装多少个元素的话,可以创建时候指定初始值,这样就避免了重复创建数组和拷贝值。...我通常倾向于将接口作为方法和属性返回类型,而不是保证一个特定实现类。API公开易变集合之前,你也应该深思熟虑,特别是当集合代表是对象或类型状态时。...C#,你不能直接创建非零下限数组——需要使用Array.CreateInstance来创建,它可以分别指定下限、长度和元素类型。...它不仅知道如何创建数组及其索引,还可以foreach循环中直接支持它们;使用表达式对编译时已知为数组类型进行迭代时,将使用Length属性和数组索引器,而不会创建迭代器对象。...注意,字典主要目的在于为值提供有效查找

    18120

    Swift教程(四)--集合类型

    数组是有序集合。集合是唯一值无序集合。字典是无序键值对集合。 集合类型可变性 如果你创建一个数组、集合或者一个字典,并且赋值给一个变量,那么创建集合就是可变。...集合不需要改变情况下创建不可变集合是个不错选择。这样做可以允许 Swift 编译器优化你创建集合性能。 数组(arrays) 数组以有序方式来储存相同类型值。...enumerated()方法返回数组每一个元素元组,包含了这个元素索引和值。...要以特定顺序遍历集合值,使用 sorted()方法,它把集合元素作为使用 < 运算符排序了数组返回。...每一个值都与唯一键相关联,它就好像这个值身份标记一样。不同于数组元素,字典元素没有特定顺序。当你需要查找基于特定标记时候使用字典,很类似现实生活字典用来查找特定字定义。

    1.1K30
    领券