首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用ndarray作为键的值拆分字典

如何用ndarray作为键的值拆分字典
EN

Stack Overflow用户
提问于 2020-08-29 11:31:41
回答 1查看 41关注 0票数 0

我有一个字典,有10个值,键为1-10,每个键的值是维度的值(126,1024)。我想把这本字典分成5码,所以结果是两本5码的字典。我的代码如下:

代码语言:javascript
复制
pp=0
def chunks(data, SIZE=2):
    it = iter(data)
    for i in range(0, len(data), SIZE):
        yield {(i,k) for (i,k) in islice(it, SIZE)}

for item in chunks({(i,np.array(k)) for (i,k) in data_dic.items()}, 5):
    pp=pp+1
    dump_dic(item,pp)
    #print(item)

这段代码给出了一个错误,错误类型是不可引用类型:'numpy.ndarray' in line:for item in chunks({(i,np.array(k)) for (i,k) in data_dic.items()}, 5):

有人能建议我如何用ndarray数据来分割这本词典吗?

EN

回答 1

Stack Overflow用户

发布于 2020-08-29 11:52:56

试试这个

代码语言:javascript
复制
dic = {1:np.zeros((20,20)), 2:np.zeros((20,20)), 3:np.zeros((20,20)), 4:np.zeros((20,20)), 5:np.zeros((20,20)), 6:np.zeros((20,20)), 7:np.zeros((20,20)), 8:np.zeros((20,20)), 9:np.zeros((20,20)), 10:np.zeros((20,20))}    
import math
num = 3 #number of dictionaries, in your question you said 2(5, 5),i added 3 dic (3, 3, 4) 
arr = []
for i in range(num):
    if i == num -1:
       arr.append(math.ceil(len(dic) / 3))
    else:        
       arr.append(math.floor(len(dic) / 3))


dic_list = []
m = 0
for i in arr:
   k = 1
   temp = {}
   for j in list(dic.values())[m:m+i]:
      temp[k] = j
      k += 1    
   dic_list.append(temp)    
   m = i  

# So you end up with array  of dictionaries. with 3, 3, 4 data

示例:输入

代码语言:javascript
复制
{1:np.array(), 2:np.array(), 3:np.array(), 4:np.array(), 5:np.array(), 6:np.array(), 7:np.array(), 8:np.array(), 9:np.array(), 10:np.array()}

输出

代码语言:javascript
复制
  [{1:np.array(), 2:np.array(), 3:np.array()}, {4:np.array(), 5:np.array(), 6:np.array()}, {7:np.array(), 8:np.array(), 9:np.array(), 10:np.array()}]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63646477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档