numpy支持的数据类型非常精细,但是numpy不支持精确小数。在导入numpy模块时,通常把numpy模块重命名为np:
import numpy as np
一,numpy的数据类型
numpy支持的数据类型如下表所示:
类型 | 比特位 | 说明 |
---|---|---|
bool_ = bool8 | 8位 | 布尔类型 |
int8 = byte | 8位 | 整型 |
int16 = short | 16位 | 整型 |
int32 = intc | 32位 | 整型 |
int_ = int64 = long | 64位 | 整型 |
uint8 = ubyte | 8位 | 无符号整型 |
uint16 = ushort | 16位 | 无符号整型 |
uint32 = uintc | 32位 | 无符号整型 |
uint64 = uintp | 64位 | 无符号整型 |
float16 | 16位 | 浮点型 |
float32 = single | 32位 | 浮点型 |
float_ = float64 = double | 64位 | 浮点型 |
str_ = unicode_ = unicode | Unicode 字符串 | |
datetime64 | 日期时间类型 | |
timedelta64 | 表示两个时间之间的间隔 |
1,浮点数类型
数据类型的信息,可以通过finfo来查看浮点数的类型信息,通过iinfo函数来查看整数的类型信息,
finfo.eps表示1.0和下一个大于1.0的最小的浮点数之间的差异值。
ff16 = np.finfo(np.float16) print(ff16.bits) # 16 print(ff16.min) # -65500.0 print(ff16.max) # 65500.0 print(ff16.eps) # 0.000977
2,日期时间类型
datetime64是带单位的,分为日期单位和时间单位,日期单位的级别都大于时间单位。
日期单位是:年(Y),月(M),周(W),天(D),单位级别依次减小,
时间单位是:时(h),分(m),秒(s),毫秒(ms),微妙(us),纳秒(ns),单位级别依次减小,
- 1秒 = 1000 毫秒(milliseconds)
- 1毫秒 = 1000 微秒(microseconds
通过字符串来创建日期时间类型,默认情况下,numpy会根据字符串来自动选择日期和时间单位:
a = np.datetime64('2020-03-08 20:00:05') b = np.datetime64('2020-03-08')
datetime64的单位是级别最小的单位,例如,a 的单位是s,而b的单位是D。
3,时间增量
timedelta64 表示两个 datetime64 之间的差值,timedelta64是带单位的,和相减运算中的两个 datetime64 中的较小的单位保持一致。
t1 = np.datetime64('2020-03-08') - np.datetime64('2020-03-07')
t1 表示两个日期之间的差值,单位是D。
二,np.datetime64 和 datetime.datetime之间的转换
import numpy as np import datetime dt = datetime.datetime(year=2020, month=6, day=1, hour=20, minute=5, second=30) dt64 = np.datetime64(dt, 's') print(dt64, dt64.dtype) # 2020-06-01T20:05:30 datetime64[s] dt2 = dt64.astype(datetime.datetime) print(dt2, type(dt2)) # 2020-06-01 20:05:30 <class 'datetime.datetime'>
三,numpy的空值
nan表示空值,两个nan是不相等的。
print(np.nan == np.nan) # False print(np.nan != np.nan) # True
参考文档: