【问题标题】:Convert the Strings and Integers of a NumPy Array into Floats [duplicate]将 NumPy 数组的字符串和整数转换为浮点数 [重复]
【发布时间】:2021-12-31 16:13:30
【问题描述】:

我有一个 numpy 数组:

array([758, 762, 762, ..., '1.870,00', '1.870,00', '1.870,00'],
      dtype=object)

我想得到:

array([758., 762., 762., ..., 1870., 1870., 1870.])

我尝试了几种方法将其所有元素转换为浮点数,但每次都失败了。

【问题讨论】:

    标签: python numpy numpy-ndarray


    【解决方案1】:

    这个怎么样?

    In [175]: def convert_to_float(val):
         ...:     if isinstance(val, str):
         ...:         return float(val.replace('.', '').replace(',', '.'))
         ...:     elif isinstance(val, int):
         ...:         return float(val)
         ...:     return val
    
    In [176]: a = np.array([758, 762, 762, '1.870,00', '1.870,00', '1.870,00'], dtype=object)
    
    In [177]: np.array([convert_to_float(val) for val in a])
    Out[177]: array([ 758.,  762.,  762., 1870., 1870., 1870.])
    

    【讨论】:

      【解决方案2】:

      这个怎么样:

      import numpy as np
      
      arr = np.array([10, '1.870,00'])
      
      def custom_parse(x):
          if isinstance(x, str):
              new_str = x.replace('.', '').replace(',', '.')
              return float(new_str)
          else:
              return float(x)
      
      new_array = np.array(list(map(custom_parse, arr)))
      
      print(new_array)
      

      这很棘手,因为您的数字字符串表示不容易转换为浮点数,因此您可能必须手动解析它

      【讨论】:

      • 一切都好。如果您还没有投票,也请给@Chrispresso 投票 - 我没有删除我原来的(错误)答案,我们最终以相同的想法同时回答了
      • 我确实赞成他的回答 :) 我感谢您的回答以及您花时间回答我的问题。我真的很感谢你们俩。
      猜你喜欢
      • 2011-07-18
      • 1970-01-01
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      • 2013-03-22
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      相关资源
      最近更新 更多