如何从字典中删除多个数组

问题描述 投票:0回答:1

我想删除数组dict中的项目,但找不到有关我的问题的信息。

import numpy as np
from scipy import *
item = [3]

json ={'rois': array([[150, 340, 323, 437],
   [230, 315, 361, 450],
   [ 71, 136, 111, 152],
   [ 68,  75, 101, 127],
   [106, 264, 129, 273],
   [ 70, 137, 109, 182]]), 'class_ids': array([ 1,  2,  3,  3, 13,  3]), 'scores': array([0.999424  , 0.9991478 , 0.98883635, 0.9819324 , 0.85232574,
   0.7136188 ], dtype=float32), 'masks': array([[[False, False, False, False, False, False],
    [False, False, False, False, False, False],
    [False, False, False, False, False, False],
    ...,
    [False, False, False, False, False, False],
    [False, False, False, False, False, False],
    [False, False, False, False, False, False]],

   [[False, False, False, False, False, False],
    [False, False, False, False, False, False],
    [False, False, False, False, False, False],
    ...,
    [False, False, False, False, False, False],
    [False, False, False, False, False, False],
    [False, False, False, False, False, False]],

   [[False, False, False, False, False, False],
    [False, False, False, False, False, False],
    [False, False, False, False, False, False],
    ...,
    [False, False, False, False, False, False],
    [False, False, False, False, False, False],
    [False, False, False, False, False, False]],

   ...,

   [[False, False, False, False, False, False],
    [False, False, False, False, False, False],
    [False, False, False, False, False, False],
    ...,
    [False, False, False, False, False, False],
    [False, False, False, False, False, False],
    [False, False, False, False, False, False]],

   [[False, False, False, False, False, False],
    [False, False, False, False, False, False],
    [False, False, False, False, False, False],
    ...,
    [False, False, False, False, False, False],
    [False, False, False, False, False, False],
    [False, False, False, False, False, False]],

   [[False, False, False, False, False, False],
    [False, False, False, False, False, False],
    [False, False, False, False, False, False],
    ...,
    [False, False, False, False, False, False],
    [False, False, False, False, False, False],
    [False, False, False, False, False, False]]])}

我想删除错误的班级ID。我不知道如何伪造新的json,我在numpy和scipy文档中进行了搜索,但是我没有找到解决方案。我想要这个结果:

json ={'rois': array([[[ 71, 136, 111, 152],
[ 68,  75, 101, 127],
[ 70, 137, 109, 182]]), 'class_ids': array([ 3, 3, 3]), 'scores': array([0.98883635, 0.9819324 ,`
   0.7136188 ], dtype=float32),, 'masks': array([[[False, False, False, False, False, False],
    [False, False, False, False, False, False],
    [False, False, False, False, False, False],
    ...,
    [False, False, False, False, False, False],
    [False, False, False, False, False, False],
    [False, False, False, False, False, False]],

   [[False, False, False, False, False, False],
    [False, False, False, False, False, False],
    [False, False, False, False, False, False],
    ...,
    [False, False, False, False, False, False],
    [False, False, False, False, False, False],
    [False, False, False, False, False, False]],

   [[False, False, False, False, False, False],
    [False, False, False, False, False, False],
    [False, False, False, False, False, False],
    ...,
    [False, False, False, False, False, False],
    [False, False, False, False, False, False],
    [False, False, False, False, False, False]],

`

我尝试使用np.delete和del json [class_ids] [项目],但我有错误

ValueError: cannot delete array elements
python numpy dictionary scipy forge
1个回答
0
投票

例如,您可以实现所需的目标

import numpy as np

dictNumpy = {'rois': np.array([[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]),
             'id': np.array([1, 2, 3, 4, 3]),
             'scores': np.array([1, 2, 3, 4, 5])}
ind2rm = np.asarray(dictNumpy['id'] != 3).nonzero()[0]
for key, value in dictNumpy.items():
    dictNumpy[key] = np.delete(value, ind2rm, axis=0)
print(dictNumpy)

此打印

{'rois': array([[ 5,  6],
       [ 9, 10]]), 'id': array([3, 3]), 'scores': array([3, 5])}
© www.soinside.com 2019 - 2024. All rights reserved.