【问题标题】:Python, numpy, piecewise answer gets roundedPython,numpy,分段答案四舍五入
【发布时间】:2017-10-24 06:52:38
【问题描述】:

我对 numpy.piecewise 的输出有疑问。

我的代码:

e=110
f=np.piecewise(e,[e<120,e>=120],[1/4,1])
print(f)

结果我得到: 0 而不是想要的 0.25

有人能解释一下为什么分段似乎是四舍五入我的答案吗? 有没有办法不做就解决这个问题?

e=110
f=np.piecewise(e,[e<120,e>=120],[1,4])/4
print(f)

提前多谢

【问题讨论】:

  • Python 2 还是 3? 1/4 == 0 在 Python 2 上,因为它是楼层划分。
  • 我不认为这是一个 numpy 问题。尝试[1.0/4.0] 而不是[1/4] 并检查是否可行。

标签: python numpy piecewise


【解决方案1】:

来自np.piecewise docs

输出的形状和类型与 x 相同

整数输入,整数输出。如果你想要一个浮点输出,你需要传入一个浮点数:

e = 110.0

此外,如果您使用的是 Python 2,1/4 已经是 0,因为这是 Python 2 上的楼层划分,所以您需要编写类似 1.0/4.0 或只是 0.25 的内容。

【讨论】:

    【解决方案2】:

    在您的代码中,1/4 产生的 int 值为 0。使用 float(1)/4 将产生其浮点值。

    e=110
    f=np.piecewise(e,[e<120,e>=120],[float(1)/4,1])
    print(f)
    

    【讨论】:

      猜你喜欢
      • 2015-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-07
      • 1970-01-01
      • 1970-01-01
      • 2020-03-05
      • 1970-01-01
      相关资源
      最近更新 更多