从dtype创建Numpy标量

n00*_*00b 4 python numpy

我正在尝试创建一个指定dtype的numpy标量.我知道我可以做,x = numpy.int16(3)但是我不提前知道dtype.

如果我想要一个阵列那么

dtype = int
x = numpy.array(3, dtype=dtype)
Run Code Online (Sandbox Code Playgroud)

会这样做的,所以我对此寄予厚望

x = numpy.generic(3, dtype=dtype)
Run Code Online (Sandbox Code Playgroud)

但是无法创建一个实例numpy.generic.

有任何想法吗?

gsa*_*kis 9

正如所评论的,所接受的答案通常不适用于所有数据类型,例如 timedeltas:

In [6]: d = np.dtype("timedelta64[10m]")

In [7]: d.type(3)
Out[7]: numpy.timedelta64(3)
Run Code Online (Sandbox Code Playgroud)

要始终获得正确答案,请使用以下命令:

In [8]: np.array(3, d)[()]
Out[8]: numpy.timedelta64(3,'10m')
Run Code Online (Sandbox Code Playgroud)


NPE*_*NPE 6

以下将创建一个标量x的dtype:

In [18]: val = x.dtype.type(3)

In [19]: val
Out[19]: 3

In [20]: type(val)
Out[20]: numpy.int32
Run Code Online (Sandbox Code Playgroud)