2013-09-01 77 views
0

我知道numpy的方法有numpy.finfo()以獲取有關基於浮點數的dtype的信息,以及numpy.iinfo()的整數副本。有沒有一種方法可以接受任何dtype?目前我被迫自己挑選合適的人:有關dtype數組的信息

try: 
    maxv = numpy.finfo(data.dtype).max 
except: 
    maxv = numpy.iinfo(data.dtype).max 

回答

2

我不認爲NumPy提供了這樣的功能。只需自己定義函數,將其放入模塊中,並根據需要導入它。請注意,通常使用裸露的except是不好的做法。使用除了ValueError這裏會更好。

0

對於「任何」類型,我很肯定沒有這樣的方法,因爲這不是一般信息。

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