首页 > 解决方案 > NumPy 1.20 中的数据类型 np.dtype(np.int32) 与 np.int32

问题描述

考虑这个用例:

import numpy as np

a = np.int32
b = np.dtype(a)

print(a == b)
# True

A = np.array([1, 2], dtype=a)
B = np.array([1, 2], dtype=b)

print(A == B)
# [True True]

print(a is b)
# False

虽然本例中的数组彼此相等,但数据类型并不相同。np.dtype(np.int32)在这种情况下和np.int32其他情况下有什么区别?

我的问题扩展到所有数据类型,而不仅仅是np.int32.

标签: pythonpython-3.xnumpy

解决方案


参考这个:https ://numpy.org/doc/stable/reference/arrays.dtypes.html

这里清楚地说:“请注意,标量类型不是 dtype 对象,即使在 NumPy 中需要数据类型规范的任何时候都可以使用它们来代替一个对象。”

所以我们可以使用 np.int32,它是一个标量类型,可以与 np.dtype(np.int32) 互换用于数据类型规范。两者最终都会被评估为 dtype('int32') 你也可以看到如下。

   np.result_type(A)
    #dtype('int32')
   np.result_type(B)
    #dtype('int32')

还:

    np.result_type(a)
    #dtype('int32')
    np.result_type(b)
    #dtype('int32')

推荐阅读