【问题标题】:Convert int values of an array into a string? [duplicate]将数组的 int 值转换为字符串? [复制]
【发布时间】:2018-11-09 14:24:04
【问题描述】:

我有以下数组

([[ 1,  1,  2,  2],
   [ 1,  1,  3,  3],
   [ 1,  1,  4,  4]])

我想将值从 int 转换为 str,如下所示:

([[ '1',  '1',  '2',  '2'],
   [ '1',  '1',  '3',  '3'],
   [ '1',  '1',  '4',  '4']])

我该怎么做?

【问题讨论】:

  • 当你说你有一个array时,你指的是Python的array.array类型还是numpy.ndarray类型?或者 - 你有一个原生的 Python 列表吗?
  • 数组 dtype=int64
  • 那么your_variable_name.astype(str) 做你想做的事吗?
  • 是的!!!谢谢!

标签: python python-3.x


【解决方案1】:

arr 是您的整数数组,您可以这样做:

list(map(lambda i: list(map(str,i)), arr)) 一个衬里。

结果:

[['1', '1', '2', '2'], ['1', '1', '3', '3'], ['1', '1', '4', '4']]

【讨论】:

    【解决方案2】:

    以下可能有效:

    def stringify_nested_containers(obj):
        if hasattr(obj, '__iter__') and not isinstance(obj, str):
            obj = list(obj)
            for idx in range(0, len(obj)):
                obj[idx] = stringify_nested_containers(obj[idx])
        else:
            obj = str(obj)
        return obj
    

    示例用法:

    lyst = [
                [ 1,  1,  2,  2],
                [ 1,  1,  3,  3],
                [ 1,  1,  4,  4]
    ]
    
    slyst = stringify_nested_containers(lyst)
    print(slyst)
    print(type(slyst[0][0]))
    

    警告:

    对于名为 stryngstryng[0]stryng[539]stryng[whatever] 的字符串不是字符,它们是字符串。

    因此,

    "h" == "hello world"[0]
    

    "h" == "hello world"[0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0]
    

    假设您尝试深入挖掘嵌套容器,直到找到没有__iter__ 方法的对象(即非容器)。假设您的嵌套容器中有一个字符串。然后你将陷入无限递归或循环,因为"a"[0] 可以迭代任何字符"a"。具体来说,"a" 有一个元素,"a"[0]"a"[0]== "a"

    【讨论】:

      猜你喜欢
      • 2012-03-24
      • 2014-03-23
      • 2018-03-20
      • 2011-04-17
      • 2013-11-12
      • 2013-11-04
      • 2021-12-21
      • 2016-08-14
      • 1970-01-01
      相关资源
      最近更新 更多