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字符串。有没有简单的方法来实现它?

4

3 回答 3

8

如此处所述,使用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'>
于 2013-09-02T08:58:13.837 回答
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)

应该管用

于 2013-04-24T12:55:18.443 回答
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。

于 2013-04-24T13:03:48.730 回答