1次I / O传递中以numpy提取和字典的最快方法

凯蒂

假设我有一个类似的数组:

arr = np.array([[1,20,5],
                [1,20,8],
                [3,10,4],
                [2,30,6],
                [3,10,5]])

并且我想为与第一列中的每个值匹配的每一行形成第三列之和的字典,即return {1: 13, 2: 6, 3: 9}为了使事情更具挑战性,我的数组中有10亿行,第一列中有10万个唯一元素。

接近1:天真,我可以调用np.unique()用的组合独特的阵列中的每个项目然后迭代np.where()np.sum()在一衬垫包围字典列表解析。如果我有少量的唯一元素,这会相当快,但是如果有100k个唯一元素,我将招致很多浪费的页面获取,从而导致整个数组进行100k I / O传递。

方法2:我也可以对最后一列进行一次I / O操作(因为必须在每一行中对列1进行散列操作可能比进行过多的页面获取便宜),但是我在这里失去了numpy的C内部循环矢量化的优势。

是否有一种无需使用纯Python循环即可实现方法2的快速方法?

海盗

numpy的方法:

u = np.unique(arr[:, 0])
s = ((arr[:, [0]] == u) * arr[:, [2]]).sum(0)

dict(np.stack([u, s]).T)

{1: 13, 2: 6, 3: 9}

熊猫方法:

import pandas as pd
import numpy as np

pd.DataFrame(arr, columns=list('ABC')).groupby('A').C.sum().to_dict()

{1: 13, 2: 6, 3: 9}

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

1次I / O传递中以numpy提取和字典的最快方法

来自分类Dev

在 angular2 中的第 (i) 次锚点点击中传递 (i+1) th 数据

来自分类Dev

为什么在R print“ no。”中声明ifelse(i == 1,print(“ yes!”),print(“ no。”))。两次?

来自分类Dev

提取 i 和 br 标签中存在的信息并保存在字典中

来自分类Dev

1次调用两次执行矩形方法

来自分类Dev

从 numpy 矩阵中删除/提取子矩阵的最快方法

来自分类Dev

如何在Java中执行1次命令x次

来自分类Dev

正确的方法继承1次更正

来自分类Dev

SQL-在列表中为第1次,第2次,第3次创建计数

来自分类Dev

SQL-在列表中为第1次,第2次,第3次创建计数

来自分类Dev

如何在Bash中执行N次N次(1次)命令

来自分类Dev

一次从光栅中提取所有波段的最快方法(python/gdal)

来自分类Dev

对列表中的i重复-n次

来自分类Dev

Gremlin-1次遍历中的顶点和边缘Upsert

来自分类Dev

递增++ i,i ++和i + = 1

来自分类Dev

在ARM上进行高效复制,两次16位提取或1次32位?

来自分类Dev

创建 2D numpy 数组的最快方法,该数组从 0 开始,并在行中增加 1,并继续到列中?

来自分类Dev

Git sync说提前1次提交和落后4次提交

来自分类Dev

在C中,{a [i] = a [++ i]}等于{a [i] = a [i + 1]; i ++;}?

来自分类Dev

从列表中填充字典的最快方法?

来自分类Dev

在Numpy中将和从i = 1写入n,log(1 + exp(w_i))的有效方法是什么

来自分类Dev

InvalidCountException:方法应精确调用1次,但应调用0次

来自分类Dev

方法应该被调用1次,实际上被调用0次[PHPUnit]

来自分类Dev

InvalidCountException:方法应精确调用1次,但应调用0次

来自分类Dev

通过tableview中的按钮进行segue执行2次segue,而不是1次

来自分类Dev

动作需要2次点击,而不是Swift中的1次点击

来自分类Dev

二次筛-o(1)代表什么?

来自分类Dev

保持Heroku保持1次动态唤醒的最佳方法

来自分类Dev

Firefox中单击1次后,弹出链接消失

Related 相关文章

  1. 1

    1次I / O传递中以numpy提取和字典的最快方法

  2. 2

    在 angular2 中的第 (i) 次锚点点击中传递 (i+1) th 数据

  3. 3

    为什么在R print“ no。”中声明ifelse(i == 1,print(“ yes!”),print(“ no。”))。两次?

  4. 4

    提取 i 和 br 标签中存在的信息并保存在字典中

  5. 5

    1次调用两次执行矩形方法

  6. 6

    从 numpy 矩阵中删除/提取子矩阵的最快方法

  7. 7

    如何在Java中执行1次命令x次

  8. 8

    正确的方法继承1次更正

  9. 9

    SQL-在列表中为第1次,第2次,第3次创建计数

  10. 10

    SQL-在列表中为第1次,第2次,第3次创建计数

  11. 11

    如何在Bash中执行N次N次(1次)命令

  12. 12

    一次从光栅中提取所有波段的最快方法(python/gdal)

  13. 13

    对列表中的i重复-n次

  14. 14

    Gremlin-1次遍历中的顶点和边缘Upsert

  15. 15

    递增++ i,i ++和i + = 1

  16. 16

    在ARM上进行高效复制,两次16位提取或1次32位?

  17. 17

    创建 2D numpy 数组的最快方法,该数组从 0 开始,并在行中增加 1,并继续到列中?

  18. 18

    Git sync说提前1次提交和落后4次提交

  19. 19

    在C中,{a [i] = a [++ i]}等于{a [i] = a [i + 1]; i ++;}?

  20. 20

    从列表中填充字典的最快方法?

  21. 21

    在Numpy中将和从i = 1写入n,log(1 + exp(w_i))的有效方法是什么

  22. 22

    InvalidCountException:方法应精确调用1次,但应调用0次

  23. 23

    方法应该被调用1次,实际上被调用0次[PHPUnit]

  24. 24

    InvalidCountException:方法应精确调用1次,但应调用0次

  25. 25

    通过tableview中的按钮进行segue执行2次segue,而不是1次

  26. 26

    动作需要2次点击,而不是Swift中的1次点击

  27. 27

    二次筛-o(1)代表什么?

  28. 28

    保持Heroku保持1次动态唤醒的最佳方法

  29. 29

    Firefox中单击1次后,弹出链接消失

热门标签

归档