我有一个带有单个值(标量)的 numpy 数组,我想将其转换为对应的 Python 数据类型。例如:
import numpy as np
a = np.array(3)
b = np.array('3')
我可以将它们转换为int
并str
通过转换:
a_int = int(a)
b_str = str(b)
但我需要提前知道类型。我想在没有显式类型检查的情况下转换a
为整数和b
字符串。有没有简单的方法来实现它?
如此处所述,使用obj.item()
方法获取 Python 标量类型:
import numpy as np
a = np.array(3).item()
b = np.array('3').item()
print(type(a)) # <class 'int'>
print(type(b)) # <class 'str'>
在这种情况下
import numpy as np
a = np.array(3)
b = np.array('3')
a_int = a.tolist()
b_str = b.tolist()
print type(a_int), type(b_str)
应该管用
这会将ints 转换为str,并将str转换为int ,而无需提前知道类型。它所做的是确定在 (a/b) 上调用(str)或(int )。内联 'a if b else c' 等价于 ?: 三元运算符(您可能熟悉)。
a = '1'
a_res = (str if type(a) == type(1) else int)(a)
print(type(a_res))
b = 1
b_res = (str if type(b) == type(1) else int)(b)
print(type(b_res))
产生:
>>>
<class 'int'>
<class 'str'>
如您所见,相同的代码用于转换 a 和 b。