Sử dụng val.item()
để chuyển đổi hầu hết các giá trị NumPy sang loại Python gốc:
import numpy as np
# for example, numpy.float32 -> python float
val = np.float32(0)
pyval = val.item()
print(type(pyval)) # <class 'float'>
# and similar...
type(np.float64(0).item()) # <class 'float'>
type(np.uint32(0).item()) # <class 'long'>
type(np.int16(0).item()) # <class 'int'>
type(np.cfloat(0).item()) # <class 'complex'>
type(np.datetime64(0, 'D').item()) # <class 'datetime.date'>
type(np.datetime64('2001-01-01 00:00:00').item()) # <class 'datetime.datetime'>
type(np.timedelta64(0, 'D').item()) # <class 'datetime.timedelta'>
...
( np.asscalar(val)
Tuy nhiên, một phương pháp khác là không được chấp nhận kể từ NumPy 1.16).
Đối với người tò mò, để xây dựng bảng chuyển đổi vô hướng mảng NumPy cho hệ thống của bạn:
for name in dir(np):
obj = getattr(np, name)
if hasattr(obj, 'dtype'):
try:
if 'time' in name:
npn = obj(0, 'D')
else:
npn = obj(0)
nat = npn.item()
print('{0} ({1!r}) -> {2}'.format(name, npn.dtype.char, type(nat)))
except:
pass
Có một vài loại NumPy rằng không có Python tương đương nguồn gốc trên một số hệ thống, bao gồm: clongdouble
, clongfloat
, complex192
, complex256
, float128
, longcomplex
, longdouble
và longfloat
. Chúng cần được chuyển đổi thành tương đương NumPy gần nhất trước khi sử dụng .item()
.