使用numpy数组计数相似的元组

2024-06-18 10:42:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有32个这样的阵列:

>>> d01
array([[8, 4, 1, 0, 0],
       [6, 8, 5, 5, 2],
       [1, 1, 1, 1, 1]])

>>> d02 ...

>>> d32
array([[8, 7, 1, 0, 3],
       [2, 8, 5, 5, 2],
       [1, 1, 1, 1, 1]])
  • 第3行只有一个,dxy[2,i]=1
  • 对(dxy[0,i],res[1,i])是唯一的
  • 典型的dxy.形状~(310e6)
  • 32个dxy数组不能是dict,因为它们在共享内存上。在

扩展内存以获得最终结构的最快方法是什么:

^{pr2}$

因此res[2,i]的值表示元组(res[0,i],res[1,i])在32个dxy数组中存在的次数。在


Tags: 方法内存res数组结构arraydict形状
1条回答
网友
1楼 · 发布于 2024-06-18 10:42:03

您可以使用Counter容器,它是一个增强型字典(参见documentation)。在

import numpy as np
from collections import Counter

d01 = np.array([[8, 4, 1, 0, 0],
       [6, 8, 5, 5, 2],
       [1, 1, 1, 1, 1]])

d02 = np.array([[8, 7, 1, 0, 3],
       [2, 8, 5, 5, 2],
       [1, 1, 1, 1, 1]])

构建计数器:

^{pr2}$

将计数器重新格式化为矩阵:

res = np.c_[np.array(list(count.keys())),list(count.values())].T
Out[2]: 
array([[1, 3, 0, 8, 4, 8, 7, 0],
       [5, 2, 5, 2, 8, 6, 8, 2],
       [2, 1, 2, 1, 1, 1, 1, 1]])

相关问题 更多 >