我是NumPy和SciPy的新手。
与Matlab不同,NumPy中的每个数组似乎都有一个数据类型。

假设我们有一个整数数组x:

import numpy as np
x = np.array([1, 2, 3])

如果我想将数组转换为float,那么似乎可以进行以下工作:
y1 = x.astype('float64')  # Works!
y2 = x.astype('float_')   # Works!
y3 = x.astype('float')    # Works!

但是我很困惑地看到以下内容在没有单引号的情况下也可以使用。
y4 = x.astype(float)      # Still works!!

但是对于用于y1和y2的其他表达式,如果我省略单引号,它将不起作用:
y5 = x.astype(float64)  # Doesn't work.
y6 = x.astype(float_)   # Doesn't work.

因此,我对y4为什么起作用感到困惑,但是y5和y6会导致错误。有人可以启发我吗?

最佳答案

其他表达式起作用,您只需要从numpy导入类型。您不需要对float进行此操作,因为它是Python的内置类型。

y5 = x.astype(np.float64)
y6 = x.astype(np.float_)

字符串类型输入和类型类型输入都在内部转换为numpy.dtype对象,这是使用ndarray.dtype属性时看到的。

关于python - NumPy中astype的有效参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34320268/

10-12 18:44