我有一个字典,有10个值,键为1-10,每个键的值是维度的值(126,1024)。我想把这本字典分成5码,所以结果是两本5码的字典。我的代码如下:
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数据来分割这本词典吗?
发布于 2020-08-29 11:52:56
试试这个
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示例:输入
{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()}输出
[{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()}]https://stackoverflow.com/questions/63646477
复制相似问题