【发布时间】: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