从dtype创建Numpy标量

时间:2013-12-27 17:31:41

标签: python numpy

我正在尝试创建指定dtype的numpy标量。我知道我可以这样做,x = numpy.int16(3),但我事先并不知道dtype。

如果我想要一个数组,那么

dtype = int
x = numpy.array(3, dtype=dtype)

会这样做,所以我对

寄予厚望
x = numpy.generic(3, dtype=dtype)

但是无法创建numpy.generic的实例。

有什么想法吗?

3 个答案:

答案 0 :(得分:6)

以下将创建x的dtype标量:

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

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

In [20]: type(val)
Out[20]: numpy.int32

答案 1 :(得分:3)

作为 commented,接受的答案通常不适用于所有 dtype,例如 timedeltas:

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

In [7]: d.type(3)
Out[7]: numpy.timedelta64(3)

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

In [8]: np.array(3, d)[()]
Out[8]: numpy.timedelta64(3,'10m')

答案 2 :(得分:0)

如果有人想从字符串中获取dtype,可以使用

import numpy as np
val = np.dtype('int32').type(3.0)