创建数组时 dtype = np.int 和 int 的区别

Pea*_*ece 4 python integer numpy dtype

我对整数类型之间的差异感到困惑。

例如,这是一个numpy.arraydtype 为 的np.int

>>> arr_ = np.array([1,2], dtype = np.int)
Run Code Online (Sandbox Code Playgroud)

通过下面的代码,它代表trueintnp.int

>>> int is np.int
Out[1]: True
Run Code Online (Sandbox Code Playgroud)

但是,当我选择使用 dtype of 创建的数组的第一个值时np.int,以下代码输出false

>>> type(arr_[0]) is int
Out[2]: False
Run Code Online (Sandbox Code Playgroud)

为什么代码输出false,而不是true

看来该dtype = np.int剂量没有应用于arr_

为什么np.int不作为数组上的数据类型应用?

我已经研究过这个,但无法得到我需要的东西。

Ser*_*sta 6

在 Python 中,类型intnp.int32np.int64是 3 种不同的类型:

  • int是原生 Python 多精度整数类型,能够表示任何整数值(唯一的限制是可用内存)。例如2**128是一个int有效值
  • np.int32int32_tC 整数类型中,最多可以使用 32 位表示值,即 -2147483648 和 2147483647 之间的值
  • np.int64int64_tC 整数类型,最多可以使用 64 位表示值,即 -9223372036854775808 和 9223372036854775807 之间的值

Andnp.int是本机 Python 类型的(已弃用的别名)int,原因int is np.int是正确的。但是 numpy 整数数组即使dtype=int接收实际类型的np.int32or ,np.int64因为它们必须由 C 代码处理,所以它们必须强制为固定大小的整数类型。如果您确实需要存储真实int值,则必须使用dtype=object但操作将不再可矢量化。