python - 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
.
解决方案
参考这个: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')
推荐阅读
- javascript - 为什么我的循环在 JavaScript 中不起作用?
- asp.net - DateTimePicker 未出现在工具箱中
- python - 如何将元素插入到任意深度的空列表嵌套列表中
- excel - 使用什么:COUNTIF 或 Vlookup 或组合或其他?
- apache-spark - Kubernetes 中的 Spark 作业卡在 RUNNING 状态
- python - How do I convert 24:10 - Monday to 00:10 - Tuesday in Python?
- c++ - 我可以更改 node.js 使用的 v8 版本吗?
- c - 如何添加一个for循环的计数器并将其传递给C中的函数
- db2 - 在为并行处理创建的 DB2 函数中使用临时表..?
- vuejs2 - Vue js - 注册新函数后 VueToasted 全局为空