我正在尝试创建指定dtype的numpy标量。我知道我可以这样做,x = numpy.int16(3)
,但我事先并不知道dtype。
如果我想要一个数组,那么
dtype = int
x = numpy.array(3, dtype=dtype)
会这样做,所以我对
寄予厚望x = numpy.generic(3, dtype=dtype)
但是无法创建numpy.generic
的实例。
有什么想法吗?
答案 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)