task01数据类型及数组创建

本文详细介绍了Python中numpy数据类型,包括bool、int、float、str及其扩展类型,并探讨了数据类型溢出行为。此外,还阐述了如何创建和操作numpy数组,特别是时间日期和时间增量的处理,以及各种方式创建数组如ones、zeros、empty等。最后,讨论了结构数组的创建以及数组的重要属性。
摘要由CSDN通过智能技术生成

数据类型及数组创建

01 常量

numpy.nan
  • nan = NaN = NAN,注意:两个numpy.nan是不相等的!

  • numpy.isnan(x,*args,**kwargs)用来检测空值,返回bool值向量

numpy.inf
  • 表示正无穷大,Inf = inf =infty = Infinity = PINF

    print(0 * np.nan)
    print(np.nan == np.nan)
    print(np.inf > np.nan)
    print(np.nan - np.nan)
    print(0.3 == 3 * 0.1)
    # nan
    # False
    # False
    # nan
    # False  
    # ⭐由于浮点数在机器里都是二进制运算,十进制的小数转化成二进制可能是无穷的,但机器只能取有穷计算完以后恢复成十进制就会有偏差
    # 所以对于计算得到的浮点数不要用 == 来进行判断,无法得到十进制意义上的绝对相等
    
numpy.pi
numpy.e
  • 自然常数

02 数据类型

常见数据类型

bool、int、float、str是python原生的数据类型,为了加以区分,在numpy中这些数据类型名称末尾加了“_”。同时由于科学计算通常需要更多的控制,所以numpy将数据类型进行了扩展。

下表列举了常用numpy基本类型:

类型 备注 说明
bool_ = bool8 8位 布尔类型
int8 = byte 8位 整型
int16 = short 16位 整型
int32 = intc 32位 整型
int_ = int64 = long = int0 = intp 64位 整型
uint8 = ubyte 8位 无符号整型
uint16 = ushort 16位 无符号整型
uint32 = uintc 32位 无符号整型
uint64 = uintp = uint0 = uint 64位 无符号整型
float16 = half 16位 浮点型
float32 = single 32位 浮点型
float_ = float64 = double 64位 浮点型
str_ = unicode_ = str0 = unicode Unicode 字符串
datetime64 日期时间类型
timedelta64 表示两个时间之间的间隔
创建数据类型

numpy的数据类型实际上是dtype对象的实例(python里面的原生数据类型也是)

每个内建类型都有一个唯一定义它的字符代码,如下:

字符 对应类型 备注
b boolean ‘b1’
i signed integer ‘i1’, ‘i2’, ‘i4’, ‘i8’
u unsigned integer ‘u1’, ‘u2’ ,‘u4’ ,‘u8’
f floating-point ‘f2’, ‘f4’, ‘f8’
c complex floating-point
m timedelta64 表示两个时间之间的间隔
M datetime64 日期时间类型
O object
S (byte-)string S3表示长度为3的字符串
U Unicode Unicode 字符串
V void
数据类型溢出

Python 的浮点数通常是64位浮点数,几乎等同于 np.float64

NumPy和Python整数类型的行为在整数溢出方面存在显着差异,与 NumPy 不同,Python 的int 是灵活的。这意味着Python整数可以扩展以容纳任何整数并且不会溢出。

numpy.int16最小值为-32768,最大值为32767

numpy.int32最小值为-2147483648,最大值为2147483647

numpy.float16最小值为-65500.0,最大值为65500.0,精度为0.000977

numpy.float32最小值为-3.4028235e+38,最大值为3.4028235e+38,精度为1.1920929e-07

03 时间日期和时间增量

datetime64

在 numpy 中,我们很方便的将字符串转换成时间日期类型 datetime64datetime 已被 python 包含的日期时间库所占用)。

datatime64是带单位的日期时间类型,其单位如下:

日期单位 代码含义 时间单位 代码含义
Y h 小时
M m 分钟
W s
D ms 毫秒
- - us 微秒
- - ns 纳秒
- - ps 皮秒
- - fs 飞秒
- - as 阿托秒
  • 从字符串创建 datetime64 类型时,默认情况下,numpy 会根据字符串自动选择对应的单位。
import numpy as np

a = np.datetime64('2020-03-01')
print(a, a.dtype)  # 2020-03-01 datetime64[D]

a = np.datetime64('2020-03')
print(a, a.dtype)  # 2020-03 datetime64[M]

a = np.datetime64('2020-03-08 20:00:05')
print(a, a.dtype)  # 2020-03-08T20:00:05 datetime64[s]

a = np.datetime64('2020-03-08 20:00')
print(a, a.dtype)  # 2020-03-08T20:00 datetime64[m]

a = np.datetime64('2020-03-08 20')
print(a, a.dtype)  # 2020-03-08T20 datetime64[h]
  • 从字符串创建 datetime64 类型时,可以强制指定使用的单位。
import numpy as np

a = np.datetime64('2020-03', 'D')
print(a, a.dtype)  # 2020-03-01 datetime64[D]

a = np.datetime64('2020-03', 'Y')
print(a, a.dtype)  # 2020 datetime64[Y]

print(np.datetime64('2020-03') == np.datetime64('2020-03-01'))  # True
print(np.datetime64('2020-03') == np.datetime64('2020-03-02'))  #False
  • 从字符串创建 datetime64 数组时,如果单位不统一,则一律转化成其中最小的单位。
  • 使用np.arange()创建 datetime64 数组,用于生成日期范围。
datetime64和timedelta64运算
  • timedelta64 表示两个 datetime64 之间的差。timedelta64 也是带单位的,并且和相减运算中的两个 datetime64 中的较小的单位保持一致。
  • 生成 timedelta64时,要注意年(‘Y’)和月(‘M’)这两个单位无法和其它单位进行运算(一年有几天?一个月有几个小时?这些都是不确定的)。
  • timedelta64 的运算。
import numpy as np

a = np.timedelta64(1, 'Y')
b = np.timedelta64(6, 'M')
c = np.timedelta64(1, 'W')
d = np.timedelta64(1, 'D'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值