【问题标题】:Comparison two values from two different classes "<class 'pydicom.valuerep.DSfloat'>" and <class 'numpy.ndarray'> in Python在 Python 中比较来自两个不同类“<class 'pydicom.valuerep.DSfloat'>”和 <class 'numpy.ndarray'> 的两个值
【发布时间】:2018-10-16 07:10:05
【问题描述】:

我想在下面的代码中使用“if”来比较一些值,但它不起作用:

if Slice_num[person][i, [1]] == Z_pos:   # Slice_num[0][15, [1]] is ['-10.000000'] and Z_pos = -10.000000 
    absname = os.path.join(root, dcmfile)

示例:上述变量中​​的值相等:

Z_pos: -10.000000 , <class 'pydicom.valuerep.DSfloat'>
Slice_num[person][i, [1]]: ['-10.000000'] , <class 'numpy.ndarray'>

因此,执行代码时,ifstatement 无法应用,ifstatement 之后的下一行无法运行。而它们的值(-10.000000)相同。 如何解决问题,让ifstatement 发现它们相等?

【问题讨论】:

  • 请提供完整的错误跟踪,并尝试提供minimal reproducible example(在实例中这可能很困难,因为涉及到一些 IO),以便我们可以复制错误并尝试提供帮助。
  • 另外,尝试一次只问一个问题。问两个意味着你可能得不到任何答案,因为可以回答一个部分的人可能无法回答另一个。
  • @Daniel F:问题改了。
  • 链接无法解决我的问题。

标签: arrays python-3.x numpy pydicom


【解决方案1】:

这些值实际上并不相同。 Slice_num[person][i, [1]] 是一个 numpy.ndarray 包含一个项目,即您要比较的值。 试试
Slice_num[person][i, [1]][0] == Z_pos

【讨论】:

  • Slice_num[person][i, [1]][0] == Z_pos 无效。 Slice_num[person][i, [1]][0] = {str_} -10.000000Z_pos = {DSfloat} -10.000000。这是因为数据结构。
  • 是的。所以尝试这个建议可以让你获得你想要的价值。现在将其转换为适合您的任何类型:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-02
  • 1970-01-01
  • 2023-04-11
相关资源
最近更新 更多