半月居士 2022-06-27 18:46 采纳率: 100%
浏览 362
已结题

TypeError: unsupported operand type(s) for -: 'int' and 'list'

python 已转换为np.ndarray类型,仍然报错TypeError: unsupported operand type(s) for -: 'int' and 'list'

源代码如下

        all_tag = np.array([v for k, v in self.tags.items() if len(v) > 0 ])
        self.tags['empty'] = np.all(1 - all_tag, axis=1).astype(np.int32).tolist()

报错如下

Traceback (most recent call last):
  File "../../tools/eval.py", line 36, in <module>
    dataset = VOTDataset(args.dataset, root)
  File "/home/cao/桌面/Code/SiamMask/utils/pysot/datasets/vot.py", line 127, in __init__
    meta_data[video]['height'])
  File "/home/cao/桌面/Code/SiamMask/utils/pysot/datasets/vot.py", line 52, in __init__
    self.tags['empty'] = np.all(1 - all_tag, axis=1).astype(np.int32).tolist()
TypeError: unsupported operand type(s) for -: 'int' and 'list'

明明已经转换为ndarray类型了为什么报错仍然是int和list类型错误,np的广播机制为什么没有见效?

  • 写回答

4条回答 默认 最新

  • 万里鹏程转瞬至 人工智能领域优质创作者 2022-07-28 11:01
    关注

    从你输出的数据来看,你的all_tag不是一个纯粹的np数据,里面的一些元素是list对象,所以才导致不能用1-all_tag。所以,你只能是通过两个for循环来实现 self.tags['empty'] 的计算,或者可以尝试一下下面的代码:
    self.tags['empty'] = [1-np.array(v) for k, v in self.tags.items() if len(v) > 0 ]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 8月6日
  • 已采纳回答 7月29日
  • 修改了问题 6月27日
  • 创建了问题 6月27日

悬赏问题

  • ¥15 想问一下树莓派接上显示屏后出现如图所示画面,是什么问题导致的
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号