【问题标题】:Python - Subtracting the Elements of Two Arrays [duplicate]Python - 减去两个数组的元素
【发布时间】:2018-04-11 21:08:57
【问题描述】:

我是 Python 编程的新手,偶然发现了 Python 中我无法弄清楚的减法这一特性。我有两个 0/1 数组,大小均为 400。我想从数组 2 中的对应元素中减去数组 1 的每个元素。

例如,假设您有两个数组 A = [0, 1, 1, 0, 0]B = [1, 1, 1, 0, 1]
然后我会期待A - B = [0 - 1, 1 - 1, 1 - 1, 0 - 0, 0 - 1] = [-1, 0, 0, 0, -1] 但是在 python 中我得到[255, 0, 0, 0, 255]

这个 255 来自哪里,我如何得到 -1?

以下是一些附加信息: 我正在使用的实际变量是 Y 和 LR_predictions。

Y = 数组([[0, 0, 0, ..., 1, 1, 1]], dtype=uint8)

LR_predictions = array([0, 1, 1, ..., 0, 1, 0], dtype=uint8)

当我使用 Y - LR_predictions 或 numpy.subtract(Y, LR_predictions)

我得到:array([[ 0, 255, 255, ..., 1, 0, 1]], dtype=uint8)

谢谢

【问题讨论】:

  • 你用什么代码来得到这个结果?
  • Magic 8-ball 说你有 dtype uint8 的 NumPy 数组,它不能保存负数。请学习构造一个minimal reproducible example。您正在向我们展示列表,这些列表根本不支持 A - B
  • @ducminh 我在上面的问题描述中添加了一些额外的信息。谢谢!
  • @user2357112 这样更好吗?我不能在这里给你所有的代码来重现它,因为数据集来自另一个个人创建的模块,但我相信我已经提供了足够的信息。

标签: python arrays math subtraction


【解决方案1】:
A = [0, 1, 1, 0, 0]
B = [1, 1, 1, 0, 1]
newlist = [e-B[c] for c,e in enumerate(A)]

尝试列表理解。常规列表无法获得 255。你应该得到TypeError: unsupported operand type(s) for -: 'list' and 'list'

【讨论】:

    【解决方案2】:

    我无法复制它,但看起来数字是 8 位的,并且包含了一些方式

    【讨论】:

      猜你喜欢
      • 2022-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-27
      • 1970-01-01
      • 1970-01-01
      • 2020-07-22
      • 1970-01-01
      相关资源
      最近更新 更多