【问题标题】:Matrix divide by zero warning矩阵除以零警告
【发布时间】:2020-07-08 19:24:45
【问题描述】:

我是 Python 新手,我在代码中遇到以下错误:

import numpy as np
A = np.empty([2, 2], dtype = float)
Z = np.empty([2, 2], dtype = float)
Z = [[2.0, 0.0],  [0.0, 3.0]]
A = [[1, -1], [1, -2]]

print(np.divide(A, np.power(Z, 2)))

这些代码给出以下结果:

[[ 0.25  -inf], [inf -0.22222222]]

但我知道,使用计算器,正确答案应该是:

[[ 0.25   -0.25], [ 0.111111 -0.22222222]]

简而言之,这个操作给了我以下错误: RuntimeWarning:在 true_divide 中遇到除以零

【问题讨论】:

  • 你是如何得到计算器的输出的?似乎计算器正在计算其他东西。
  • 当您使用Z = [[2.0, 0.0], [0.0, 3.0]]A = [[1, -1], [1, -2]] 时,您将AZ 设置为类型列表。我宁愿使用np.array([[...], [...]], dtype=float) 初始化数组
  • 嗨@MichaelRichardson。我听从了你的建议,但错误仍然存​​在。

标签: numpy matrix divide-by-zero


【解决方案1】:

您正在按元素将A 除以Z^2

答:

[[1, -1], [1, -2]]

Z^2:

[[4.0, 0.0],  [0.0, 9.0]]

A/Z^2:

[[ 0.25  -inf], [inf -0.22222222]]

输出是正确的。您会收到除以 0 的警告(而不是错误),因为分母中的 Z^2 中有 0,导致输出中的 infs。您的计算器输出不是您的代码所做的。

【讨论】:

  • 感谢您的及时回复。在这种情况下,您有什么建议,将实数标记为“inf”?
  • @CosmeRodolfoSantos 您想要的输出是什么?换句话说,您要计算什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多