【发布时间】:2020-11-10 09:44:24
【问题描述】:
假设我有 2 个数组,labels 是 1D,data 是 5D 请注意,两个数组具有相同的第一维。
为了简单起见,我们假设 labels 只包含 3 个数组:
labels=np.array([[0,0,0,1,1,2,0,0],[0,4,0,0,0],[0,3,0,2,1,0,0,1,7,0]])
假设我有一个 datalist 的 data 数组(长度=3),其中每个数组都有一个 5D 形状,其中每个数组的第一个维度与labels 数组的数组。
在本例中,datalist 有 3 个形状数组:(8,3,100,10,1), (5 ,3,100,10,1) 和 (10,3,100,10,1)。这里,每个数组的第一个维度与 label 中每个数组的长度相同。
现在我想减少每个 标签 数组中零的数量并保留其他值。假设我只想为每个数组保留 3 个零。因此,labels中每个数组的长度以及data中每个数组的第一个维度将是6,4 和 8。
为了减少每个标签数组中零的数量,我想随机选择并保持只有3个。现在这些相同的随机选择索引将用于从 data 中选择对应的行。
对于本例,new_labels 数组将如下所示:
new_labels=np.array([[0,0,1,1,2,0],[4,0,0,0],[0,3,2,1,0,1,7,0]])
这是我迄今为止尝试过的:
all_ind=[] #to store indexes where value=0 for all arrays
indexes_to_keep=[] #to store the random selected indexes
new_labels=[] #to store the final results
for i in range(len(labels)):
ind=[] #to store indexes where value=0 for one array
for j in range(len(labels[i])):
if (labels[i][j]==0):
ind.append(j)
all_ind.append(ind)
for k in range(len(labels)):
indexes_to_keep.append(np.random.choice(all_ind[i], 3))
aux= np.zeros(len(labels[i]) - len(all_ind[i]) + 3)
....
....
Here, how can I fill **aux** with the values ?
....
....
new_labels.append(aux)
有什么建议吗?
【问题讨论】: