【问题标题】:Convert a scipy interp1d array to a float value in Python在 Python 中将 scipy interp1d 数组转换为浮点值
【发布时间】:2017-06-28 18:37:13
【问题描述】:

在我当前的项目中,我目前遇到了转换问题: 在第一步中,我使用 scipy interp1d 插入两个列表。

f_speed = scipy.interpolate.interp1d(t, v, 'cubic')

之后我想在这个函数中得到一个特定的点。这个值现在是一个来自 scipy 的数组,其中只有一个值。

 currentSpeed = f_speed(tpoint)
 # result: array(15.1944)

作为最后一步,我想用插值函数的值计算其他值,但我只得到 0 作为值。完全没有错误。

real_distance = currentSpeed * (1/15)    # some calculations
# result: 0, all results with further calculations are zero

我需要从 scipy 数组转换为常规浮点值来继续我的计算。有什么功能可以做到吗?

我尝试了几种方法,例如 V = currentSpeed[0],或 numpy 中的 .tolist(在 scipy 中不可能)...

提前感谢您的帮助!

【问题讨论】:

    标签: python scipy interpolation


    【解决方案1】:

    您没有指定您使用的是哪个 Python 版本,但如果您使用的是 Python 2.7,则运算符 / 代表整数除法。这意味着1/15 将产生 0。无论您如何访问数组值,与此结果相乘最终都会为 0。

    要解决这个问题,请确保至少有一个操作数是浮点数。

    result1 = 1/15 # Produces 0
    result2 = 1.0/15 # Produces 0.06666666666666667
    

    如果你将它应用到你的代码中,你应该使用

    real_distance = currentSpeed * (1.0/15)
    

    【讨论】:

    • 非常感谢您的快速回答。是的,我使用的是 Python 2.7,import "from future import division" 应该可以工作,希望我会尝试!
    【解决方案2】:

    您使用的是 Python 2 吗?如果是这样,问题是分裂。 整数除法将产生一个整数,因此1/15 将产生0。 请改用1.0/15。通过使用1.0,您可以明确地将其设为浮点数,然后结果将符合预期。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-24
      • 2015-04-06
      • 2021-07-16
      • 2018-02-22
      • 2020-03-21
      • 2016-01-12
      • 2013-08-19
      • 1970-01-01
      相关资源
      最近更新 更多