numpy.asarray: 如何检查其结果数据类型是否为数字?

numpy.asarray: how to check up that its result dtype is numeric?

我必须使用 int、float 或复数从类似数组的数据创建一个 numpy.ndarray

希望用numpy.asarray函数来实现

我不想给它一个严格的dtype参数,因为我想将复数值转换为complex64complex128,浮点数为float32float64,等等

但是如果我只是简单地 运行 numpy.ndarray(some_unknown_data) 并查看其结果的数据类型,我怎么能理解数据是数字的,而不是对象或字符串或其他东西?

您可以检查数组的数据类型是否是 np.number 的子数据类型。例如:

>>> np.issubdtype(np.complex128, np.number)
True
>>> np.issubdtype(np.int32, np.number)
True
>>> np.issubdtype(np.str_, np.number)
False
>>> np.issubdtype('O', np.number) # 'O' is object
False

本质上,这只是检查 NumPy dtype hierarchy:

中的 dtype 是否低于 'number'