【问题标题】:convert float to string numba python numpy array将浮点数转换为字符串 numba python numpy 数组
【发布时间】:2019-10-25 06:00:01
【问题描述】:

我正在运行一个@nb.njit 函数,我试图在其中将一个整数放入一个字符串数组中。

import numpy as np
import numba as nb

@nb.njit(nogil=True)
def func():
    my_array = np.empty(6, dtype=np.dtype("U20"))
    my_array[0] = np.str(2.35646)
    return my_array


if __name__ == '__main__':
    a = func()
    print(a)

我收到以下错误:

numba.errors.TypingError: Failed in nopython mode pipeline (step: nopython frontend)
Invalid use of Function(<class 'str'>) with argument(s) of type(s): (float64)

我应该使用哪个函数在numba 内进行从floatstring 的转换?

【问题讨论】:

  • 你可能想在github.com/numba/numba/issues提出这个问题
  • 当您只是将浮点数转换为要插入的字符串时,您是否有理由使用字符串数组?我很好奇为什么不只使用 float64 dtype 的数组。
  • 我在现实世界的用例中有其他元素(日期),将它们全部作为字符串处理更简单。我最终确实把它们都当作花车处理了。

标签: python string numpy floating-point numba


【解决方案1】:

目前不支持numpy.str 函数。 Numba 的网站上提供了所有 supported numpy functions 的列表。

也不支持内置的str。这可以在supported Python features page 上查看。

做你正在尝试的唯一方法是以某种方式制作一个将浮点数转换为字符串的函数,仅使用 Numba 支持的 Python 和 Numpy 的功能。

在朝着这个方向前进之前,我还是会重新考虑将浮点数转换为字符串的必要性。它可能效率不高,并且由于将浮点数转换为字符串,您可能会因为增加一些开销而失去对一些函数进行抖动的好处。

当然,如果不了解项目的更多信息,这很难说。

【讨论】:

    【解决方案2】:

    我想要一个浮点到字符串的转换,它提供一个像“23.45”这样带有两个小数位的字符串。 我的解决方案是这样的。也许它可以帮助某人。

        def floatToString(self, floatnumber:float32) -> str:
            stringNumber:str = ""
            whole:int = math.floor(floatnumber)
            frac:int = 0
            digits:float = float(floatnumber % 1)
            digitsTimes100:float = float(digits) * float(100.0)
            if digitsTimes100 is not None:
                frac = math.floor(digitsTimes100)
            stringNumber = str(whole)+"."+str(frac)
            return stringNumber
    

    请注意舍入问题,但这对我来说已经足够了。

    【讨论】:

      猜你喜欢
      • 2021-12-28
      • 2011-07-18
      • 2013-03-22
      • 2019-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-25
      相关资源
      最近更新 更多