int()vs .astype(' int')Python

时间:2018-05-12 04:03:30

标签: python

我不确定何时使用int()以及何时使用.astype('int')。谁能解释一下?

int()用于单个值,.astype('int')用于向量吗?我来自R背景,所以我以前习惯使用as.integer

2 个答案:

答案 0 :(得分:4)

.astype()numpy.ndarray内的方法,以及Pandas Series类,因此可用于转换DataFrame中的向量,矩阵和列。但是,int()是纯Python函数,只能应用于标量值。

例如,您可以执行int(3.14),但不能执行(2.7).astype('int'),因为Python本机类​​型没有任何此类方法。但是,numpy.array([1.1, 2.2, 3.3]).astype('int')有效。

(严格地说,也可以在自己的类中定义__int__()方法,这样就可以将int()应用于非本机类型。感谢@juanpa。 arrivillaga指出这一点。)

答案 1 :(得分:1)

正如@rwp指出的,astype是一个numpy函数。它被定义为:

def _rc(self, a):
    if len(shape(a)) == 0:
        return a
    else:
        return self.__class__(a)

._ rc定义为:

{{1}}

在英语中,这意味着如果你的数组没有形状 - 即它是一个列表 - 它返回数组,否则它会返回数组本身强制转换为指定的类型。

int是一个内置的python。它只涉及标量。