将numpy标量转换为简单的Python类型

6

我有一个包含单个值(标量)的numpy数组,我想将其转换为相应的Python数据类型。例如:

import numpy as np
a = np.array(3)
b = np.array('3')

我可以通过强制转换将它们转换为intstr:

a_int = int(a)
b_str = str(b)

但我需要事先知道变量类型。我想把 a 转换为整数并把 b 转换为字符串,而不需要显式地进行类型检查。有没有简单的方法实现这个功能?

3个回答

11

此处所述,使用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'>

7
在这种情况下
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)

应该可以工作


0
这将把 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。


谢谢。当你有更多可能的类型,比如浮点数、布尔值等时,这会变得有些麻烦。这就是为什么我更喜欢E先生的答案。 - btel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接