如何从字符串“long”创建一个 numpy dtype?

jan*_*ver 3 python types numpy

我有一个包含字符串“long”的变量。如何创建一个 numpy dtype 对象,该对象具有与此字符串中的 long 等效的某种类型?我有一个包含许多数字和相应类型的文件。intfloat等等都没有问题,只是long不工作。我不想long -> int32在我的代码中硬编码一些替代品。

>>> np.dtype('long')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: data type not understood
Run Code Online (Sandbox Code Playgroud)

另外:有没有办法从纯python中的字符串创建变量类型?我的意思是,我想要 的倒数int.__name__,它将类型名称转换为字符串。

DSM*_*DSM 5

在这种特殊情况下,我认为您可以使用getattrnumpy模块本身获取它:

>>> import numpy as np
>>> np.dtype('long')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: data type not understood
Run Code Online (Sandbox Code Playgroud)

但:

>>> getattr(np, 'long')
<type 'long'>
>>> np.dtype(getattr(np, 'long'))
dtype('int64')
>>> np.dtype(getattr(np, 'int'))
dtype('int32')
>>> np.dtype(getattr(np, 'float64'))
dtype('float64')
>>> np.dtype(getattr(np, 'float'))
dtype('float64')
Run Code Online (Sandbox Code Playgroud)