半月居士 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日

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?