0

numpy にはnumpy.finfo()、float ベースの dtype に関する情報とnumpy.iinfo()、それに対応する整数のメソッドがあることを知っています。任意の dtype を受け入れるメソッドはありますか? 現在、私は自分で正しいものを選択することを余儀なくされています:

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

2 に答える 2

2

NumPy がそのような機能を提供するとは思いません。自分で関数を定義し、モジュールに入れ、必要に応じてインポートするだけです。一般に、bare を使用exceptすることは悪い習慣であることに注意してください。ここで以外を使用ValueErrorする方が良いでしょう。

于 2013-09-01T17:29:51.063 に答える
0

「任意の」タイプの場合、それは一般的な情報ではないため、そのようなメソッドはないと確信しています。

In [7]: np.array([], dtype=object).dtype.itemsize
Out[7]: 8

一般的に、それはオブジェクトです。このような配列の各セルには、メモリ アドレスを格納できるストレージ サイズが必要です。たとえば、Python long を参照する場合がありますが、おそらくそれは NumPy を使用する種類のタスクではありません。

注意: Python は、64 ビット以上を必要とするほど大きくない限り、int64 にロング キャストします。

In [11]: np.array([long(123)]).dtype
Out[11]: dtype('int64')

In [12]: np.array([123456789 ** 1234]).dtype
Out[12]: dtype('object')

kind属性から「float」か「integer」かの情報を取得できます

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
于 2013-09-02T04:44:40.740 に答える