【问题标题】:Convert mixed data into string numpy将混合数据转换为字符串 numpy
【发布时间】:2020-07-21 10:28:49
【问题描述】:

我有这个数组:

z = np.array(['43', '65', '41', '47', '46', '73', '99', '52', '56', '23', '07',
       'C3', '49', '62', '54', 'A1', '88', '70', '42', 74.0, 20.0, 21.0,
       4, 62, 2, 3, 49, 79, '13', 'F4', 'A9', '20', '19', 19.0, 23.0,
       70.0, 83, 61, 80, 81, 66, 82, 63, '09', '06', 'F8'], dtype=object)

在这个数组中,我们将 int、str 和 float 放在一个数组中。我想将它们全部转换为字符串,但浮点值必须是整数,并且诸如“07”、“09”等值也会变成“7”、“9”。我想要的愿望结果是:

z = np.array(['43', '65', '41', '47', '46', '73', '99', '52', '56', '23', '7',
       'C3', '49', '62', '54', 'A1', '88', '70', '42', '74', '20', '21',
       '4', '62', '2', '3', '49', '79', '13', 'F4', 'A9', '20', '19', '19', '23',
       '70', '83', '61', '80', '81', '66', '82', '63', '9', '6', 'F8'], dtype=object)

这个方法我试过了

def col_convert(array):
    for i in range(len(array)):
        try:
            array[i] = str(int(array[i]))
        except:
            next
    return array   

但是对于 100 万个元素,此解决方案相当缓慢。有什么方法可以更快地处理这个任务?

【问题讨论】:

  • 你为什么用split('.')
  • 为什么你想要一个 numpy 字符串数组作为结果?有一个数字数组不是更好吗?
  • 您建议的解决方案会删除字符串。您不需要检查类型。
  • @mkrieger1 啊因为我想把它们记成字符串,在我公司可以认为是区号(区号包括数字和字符串)
  • 写一个小函数来接受元素,确定type,应用必要的转换,然后返回那个字符串。然后只需将其应用于具有列表理解的整个数组(或列表)。没有一个完整的数组 numpy 函数可以根据需要处理所有情况。对于这样的任务,对象 dtype 数组不如列表。

标签: python arrays python-3.x numpy


【解决方案1】:

试试:

z1 = np.array([str(i).split('.')[0] for i in z])

更新:根据 OP 的编辑删除前导零:

z1 = np.array([str(i).lstrip('0').split('.')[0] for i in z])

【讨论】:

  • 谢谢您,先生,我已经编辑了我的帖子。我还想将以0开头的值(例如'07','09','06')转换为'7','9','6'
  • @Long_NgV 请在我的帖子中找到编辑以涵盖 0。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-05
  • 2016-03-10
  • 1970-01-01
  • 2021-03-08
  • 2021-04-26
  • 2015-03-28
  • 2019-11-24
相关资源
最近更新 更多