我知道numpy的方法有numpy.finfo()
以獲取有關基於浮點數的dtype的信息,以及numpy.iinfo()
的整數副本。有沒有一種方法可以接受任何dtype?目前我被迫自己挑選合適的人:有關dtype數組的信息
try:
maxv = numpy.finfo(data.dtype).max
except:
maxv = numpy.iinfo(data.dtype).max
我知道numpy的方法有numpy.finfo()
以獲取有關基於浮點數的dtype的信息,以及numpy.iinfo()
的整數副本。有沒有一種方法可以接受任何dtype?目前我被迫自己挑選合適的人:有關dtype數組的信息
try:
maxv = numpy.finfo(data.dtype).max
except:
maxv = numpy.iinfo(data.dtype).max
我不認爲NumPy提供了這樣的功能。只需自己定義函數,將其放入模塊中,並根據需要導入它。請注意,通常使用裸露的except
是不好的做法。使用除了ValueError
這裏會更好。
對於「任何」類型,我很肯定沒有這樣的方法,因爲這不是一般信息。
In [7]: np.array([], dtype=object).dtype.itemsize
Out[7]: 8
這是一個對象,一般來說。這種陣列的每個單元都需要一個可以存儲內存地址的存儲大小。例如,它可能會引用一個很長的Python,但可能這不是您使用NumPy的任務。
要小心:Python長期轉換爲int64,除非它足夠大,需要多於64位!
In [11]: np.array([long(123)]).dtype
Out[11]: dtype('int64')
In [12]: np.array([123456789 ** 1234]).dtype
Out[12]: dtype('object')
你可以得到的信息,如果它是一個「浮動」或「整數」從kind
屬性
In [14]: np.array([123456789 ** 1234]).dtype.kind
Out[14]: 'O'
In [15]: np.array([long(123)]).dtype.kind
Out[15]: 'i'
In [16]: np.array([2.3, 4.3]).dtype.kind
Out[16]: 'f'
您可以按名稱從NumPy的得到它:
{"i": np.iinfo, "f": np.finfo}[data.dtype.kind](data.dtype).max