type
status
date
slug
summary
tags
category
icon
password
本章笔记记录了
📝 一维数组
一维数组的创建十分简单。首先引入NumPy库
之后就可以通过numpy中的array()创建一维数组,array()可以把元组或者列表转换成numpy数组
📝 数据类型
数据类型类别
像C语言一样,numpy提供了许多的数字类型,有以下的几种:
名称 | 描述 |
bool_ | 布尔型数据类型(True 或者 False) |
int_ | 默认的整数类型(类似于 C 语言中的 long,int32 或 int64) |
intc | 与 C 的 int 类型一样,一般是 int32 或 int 64 |
intp | 用于索引的整数类型(类似于 C 的 ssize_t,一般情况下仍然是 int32 或 int64) |
int8 | 字节(-128 to 127) |
int16 | 整数(-32768 to 32767) |
int32 | 整数(-2147483648 to 2147483647) |
int64 | 整数(-9223372036854775808 to 9223372036854775807) |
uint8 | 无符号整数(0 to 255) |
uint16 | 无符号整数(0 to 65535) |
uint32 | 无符号整数(0 to 4294967295) |
uint64 | 无符号整数(0 to 18446744073709551615) |
float_ | float64 类型的简写 |
float16 | 半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位 |
float32 | 单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位 |
float64 | 双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位 |
complex_ | complex128 类型的简写,即 128 位复数 |
complex64 | 复数,表示双 32 位浮点数(实数部分和虚数部分) |
complex128 | 复数,表示双 64 位浮点数(实数部分和虚数部分) |
numpy 的数值类型实际上是 dtype 对象的实例,并对应唯一的字符,包括 np.bool_,np.int32,np.float32,等等。
指定数据类型
我们可以通过dtype来指定数据类型:
类型代码
类型代码是用来表示 NumPy 数组中每个元素的数据类型的简写符号。这些符号用于快速标识和指定数组的元素类型,尤其是在创建数组或查看数组的 dtype 时非常有用。下面是详细列出常见 NumPy 数据类型及其对应的类型代码:
- 整数类型 b: 布尔类型(bool_),值为 True 或 False。存储时,占用 1 个字节。 i: 有符号整数类型,具体大小由后面的数字指定。例如: i1: 8 位(1 字节)有符号整数,范围为 -128 到 127。 i2: 16 位(2 字节)有符号整数,范围为 -32768 到 32767。 i4: 32 位(4 字节)有符号整数,范围为 -2147483648 到 2147483647(等同于 int32)。 i8: 64 位(8 字节)有符号整数,范围为 -9223372036854775808 到 9223372036854775807(等同于 int64)。 u: 无符号整数类型,表示没有负值的整数。具体大小由后面的数字指定。例如: u1: 8 位(1 字节)无符号整数,范围为 0 到 255(等同于 uint8)。 u2: 16 位(2 字节)无符号整数,范围为 0 到 65535(等同于 uint16)。 u4: 32 位(4 字节)无符号整数,范围为 0 到 4294967295(等同于 uint32)。 u8: 64 位(8 字节)无符号整数,范围为 0 到 18446744073709551615(等同于 uint64)。
- 浮点数类型 f: 浮点数类型,表示小数。具体大小由后面的数字指定。例如: f2: 16 位(2 字节)半精度浮点数,包含 1 个符号位,5 个指数位,10 个尾数位。数值范围大约为 ±65504。 f4: 32 位(4 字节)单精度浮点数,包含 1 个符号位,8 个指数位,23 个尾数位。数值范围大约为 ±3.4028235e+38(等同于 float32)。 f8: 64 位(8 字节)双精度浮点数,包含 1 个符号位,11 个指数位,52 个尾数位。数值范围大约为 ±1.7976931348623157e+308(等同于 float64)。
- 复数类型 c: 复数类型,表示包含实部和虚部的复数。大小由后面的数字指定。例如: c8: 64 位(8 字节)复数,每部分占 4 字节,表示为两个 32 位浮点数(等同于 complex64)。 c16: 128 位(16 字节)复数,每部分占 8 字节,表示为两个 64 位浮点数(等同于 complex128)。
- 字符串类型 S: 字符串类型,用于表示字节字符串。后面跟随的数字表示字符串的最大长度。例如: S10: 表示最多 10 个字符的字节字符串。 U: Unicode 字符串类型。后面跟随的数字表示字符串的最大长度。例如: U10: 表示最多 10 个字符的 Unicode 字符串。
- 其他类型 V: 原始数据类型(Void),通常用于表示未解释的原始数据或用于自定义数据结构。后面跟随的数字表示字节大小。例如: V4: 表示 4 个字节的未解释数据。
字节序 (可略过)
字节序决定了多字节数据在内存中的排列方式。在讨论字节序时,我们通常要考虑 CPU 的架构、数据存储方式以及跨平台的数据兼容性。字节序的差异可能会导致数据解释的巨大差异,尤其在二进制数据处理、文件存储和网络通信中。
大端序(Big-endian)与小端序(Little-endian)
大端序(Big-endian):
特点: 高位字节存储在内存的低地址端,低位字节存储在内存的高地址端。大端序的排列顺序与我们书写数字的方式相似。例如,整数 0x12345678 在大端序内存中按顺序存储为 12 34 56 78。
应用: 大端序通常用于网络字节序(Network Byte Order),在网络通信协议中广泛使用,以确保不同系统间的数据一致性。
小端序(Little-endian):
特点: 低位字节存储在内存的低地址端,高位字节存储在内存的高地址端。小端序的排列顺序与大端序相反。例如,整数 0x12345678 在小端序内存中按顺序存储为 78 56 34 12。
应用: 小端序在现代 x86 和 x86_64 架构的计算机中广泛使用,因为这种排列方式在某些算法中更高效,尤其是在处理字节数组和执行位操作时。
字节序的符号表示
NumPy 为了支持多种平台和架构,提供了字节序的显式控制。每个数据类型都可以通过前缀符号来指定字节序:
<: 小端序。例如,<i4 表示小端序的 32 位有符号整数。
>: 大端序。例如,>f8 表示大端序的 64 位浮点数。
=: 系统本地字节序。=i4 表示使用当前系统的字节序。如果系统是小端序的,那么 =i4 等同于 <i4。
|: 无字节序。例如,|S10 表示 10 字节的字符串,因为字符串的字节顺序是固定的,不依赖于字节序。
字节序的转换与数据互操作性
在跨平台开发或数据交换时,字节序的差异可能会导致数据解析错误。因此,在处理二进制文件、网络数据或跨平台应用时,需要明确字节序并进行必要的转换。例如:
类型转换:
使用数组对象的astype(dtype)方法可以转换数组元素的数据类型
📝 arange(), linspace(), logspace()函数的用法
在 NumPy 中,arange()、linspace() 和 logspace() 是生成数值序列的三个重要函数。它们各自适用于不同的场景和用途,下面是对这三个函数的详细讲解,包括其用法、参数、以及在实际应用中的区别和适用场景。
- arange() 1.1 用法 arange() 函数用于生成一个数值范围内的等差序列,类似于 Python 内置的 range() 函数,但更为灵活,特别是在处理浮点数时。
1.2 参数
start: 序列的起始值(包含)。默认值为 0。
stop: 序列的结束值(不包含)。
step: 序列中元素的间隔(步长)。默认值为 1。如果 step 是小数,则可以生成非整数的序列。
dtype: 生成序列的类型。如果未指定,则由输入推断。
1.3 示例
1.4 注意事项
arange() 生成的序列不包含 stop 值。
当 step 为浮点数时,结果可能会有浮点精度问题。
- linspace() 2.1 用法 linspace() 函数用于生成一个数值范围内的等间隔的数列,常用于需要生成指定数量的数值点时。与 arange() 的区别在于 linspace() 会根据指定的点数生成序列,而非指定步长。
2.2 参数
start: 序列的起始值。
stop: 序列的结束值。
num: 要生成的等间隔样本数量,默认值为 50。
endpoint: 如果为 True,stop 将包含在序列内(默认值为 True)。
retstep: 如果为 True,则返回生成的间隔值(步长),同时返回数组和步长。
dtype: 输出数组的数据类型。如果未指定,则由输入推断。
2.3 示例
2.4 注意事项
linspace() 默认情况下包括 stop 值,这与 arange() 不同。
如果需要指定步长,通常会使用 retstep 参数。
- logspace() 3.1 用法 logspace() 函数用于生成对数刻度的数列,通常用于需要生成指数分布的数列时,例如在绘制对数坐标图时。
3.2 参数
start: 序列中第一个值的指数,basestart 为序列的第一个值。
stop: 序列中最后一个值的指数,basestop 为序列的最后一个值。
num: 要生成的等间隔样本数量,默认值为 50。
endpoint: 如果为 True,base**stop 将包含在序列内(默认值为 True)。
base: 对数空间的底数,默认值为 10。
dtype: 输出数组的数据类型。如果未指定,则由输入推断。
3.3 示例
3.4 注意事项
logspace() 在对数刻度上生成等间隔点,这在科学计算和数据可视化中非常有用。
base 参数允许你改变对数的底数,默认是 10,常用的还有 2。
- 作者:Larry
- 链接:https://www.larryivanhan.blog/article/numpy_2
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。