I have this array:
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)
In this array, we have int, str and float in one array. I want to convert all of them into string but float values have to be integer and the values such as '07', '09', etc also turn into '7', '9'. The desire result I want is:
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)
I have tried this method
def col_convert(array):
for i in range(len(array)):
try:
array[i] = str(int(array[i]))
except:
next
return array
However for 1 million elements, this solution are quite slow. Are there any way faster to handle this task?
split('.')?type, and applies the necessary conversion, and returns that string. Then just apply that to the whole array (or list) with a list comprehension. There isn't a whole-arraynumpyfunction that will handle all the cases as you want. For tasks like this an object dtype array is inferior to a list.