Numpy基础知识(2)
数组操作
数组展平
-
narray的flat属性
-
概念
- narray的flat属性是一个迭代器对象,允许逐个访问数组中的每个元素,就像数组被转换成一维数组一样
-
用法
-
使用flat属性遍历数组中的所有元素
-
使用flat属性修改数组中的所有元素
- 特别的有:flatiter迭代器可以通过索引赋值
-
使用flat属性将数组变换成一维
-
-
-
flatten()
-
概念
- 用于将多维数组展平成一维数组的方法,返回原数组的深拷贝副本,而非视图。
-
用法
-
展平数组,将数组变换成一维
-
flatten创建原数组的一维副本,可以看到通过flatten得到的对象与原数组不是同一个对象
-
-
参数
-
order
-
概念
- 展平的顺序,默认为"C"按行展平,可选值K(保持原来顺序),A(任意),F(按列展开),C(按行展开)
-
用法
-
-
-
-
ravel()
-
概念
- 用于将多维数组展平成一维数组的方法,返回原数组的一个一维视图,而非副本
-
用法
-
展平数组,将数组变换成一维
-
ravel创建原数组的一维视图,可以看到通过ravel是原数组的一个视图
-
-
参数
-
order
-
概念
- 展平的顺序,默认为"C"按行展平,可选值K(保持原来顺序),A(任意),F(按列展开),C(按行展开)
-
用法
- 按行展平order='C’与按行展平order='F’的不同
-
-
-
数组转置
-
transpose
-
概念
- 用于交换数组的轴
-
用法
-
对于二维数组,transpose方法可以让列和行交换
-
对于高位数组,transpose可以接受一个元组作为轴的排列顺序
-
-
注意事项
- transpose方法返回的是一个副本
-
-
.T属性
- 对于二维数组可以使用.T属性类进行简单的转置,类似于transpose
修改数组维度
-
expand_dims
-
说明
- 用于增加数组的维度,可以在指定位置插入一个长度为1的新轴
-
用法
-
在指定位置插入新轴,在轴索引0处插入了一个长度为1的新轴
-
在指定位置插入新轴,在轴索引1处插入了一个长度为1的新轴
-
-
参数
-
arr
- 要插入轴的数组
-
axis
- 插入轴的索引
-
-
注意事项
- expand_dims返回原数组的副本
-
-
squeeze
-
说明
- 用于删除所有维度大小为1的轴
-
用法
-
删除了所有维度为1的轴
-
删除了指定索引0和索引2的轴
-
-
参数
-
arr
- 要删除轴的数组
-
axis(可选)
- 默认为删除所有维度为1的轴,如果设置了索引,则删除索引轴,如果轴维度不为1会引发异常
-
-
注意事项
- squeeze返回原数组的副本
-
连接数组
-
hstack
-
说明
- hstack函数用于水平堆叠,即第2个轴
-
用法
-
按照水平方向顺序依次堆叠数组
-
hstack是水平方向的叠加
-
-
参数
-
tup
- 序列容器,这里面的元素将被水平堆叠
-
-
注意事项:堆叠元素的行数即0轴的维度必须相等
-
-
vstack
-
说明
- vstack函数用于垂直堆叠,即第1个轴
-
用法
-
按照垂直方向顺序依次堆叠数组
-
vstack是垂直方向的叠加
-
-
参数
-
tup
- 序列容器,这里面的元素将被垂直堆叠
-
-
注意事项:堆叠元素的列数即1轴的维度必须相等
-
分割数组
-
hsplit
-
说明
- hsplit用于水平分割数组
-
用法
-
输入一个整数代表将数组均匀分割,该处是2即将数组分割成大小相等的两部分
-
如果输入一个序列,则按照序列在索引处分割数组
-
-
参数
-
ary
- 要分割的输入数组。
-
indices_or_sections
- 如果是一个整数代表将数组均匀分割成几份,如果是一个序列则表示沿给定的索引处分割数组
-
-
注意事项
- 如果索引序列后面的值小于前面的索引,则会进行将i-1到i索引的数组置空,然后在i索引之后分割一个原数组到i索引之后的数组
-
-
vsplit
-
说明
- vsplit用于垂直分割数组
-
用法
-
输入一个整数代表将数组均匀分割,该处是2即将数组分割成大小相等的两部分
-
如果输入一个序列,则按照序列在索引处分割数组
-
-
参数
-
ary
- 要分割的输入数组。
-
indices_or_sections
- 如果是一个整数代表将数组均匀分割成几份,如果是一个序列则表示沿给定的索引处分割数组
-
-
注意事项
- 如果索引序列后面的值小于前面的索引,则会进行将i-1到i索引的数组置空,然后在i索引之后分割一个原数组到i索引之后的数组
-
矩阵运算
-
dot
-
说明
- 用于计算两个数组间的点积,可以用于一维数组和多维数组
-
用法
-
对于二维数组时,相当于计算矩阵乘法
-
对于一维数组时相当于计算向量内积
-
对于高维数组,dot函数也可以用于更高维度的数组,但是需要确保在操作中涉及的维度是兼容的。
-
-
@操作符
- dot函数和@操作符在NumPy中是等价的,所以你也可以使用A @ B来代替np.dot(A, B)。
-
注意事项
- 当使用dot函数进行矩阵乘法时,第一个数组的列数必须等于第二个数组的行数。
-
-
matmul
-
说明
-
matmul函数主要用于计算两个数组的矩阵乘积
-
matmul也可以用于计算向量的点积
-
在处理高维数组时和dot函数不同
-
-
用法
-
matmul用于计算向量点积
-
matmul用于计算矩阵乘法
-
matmul函数在处理高维数组时的行为与dot函数有所不同。matmul会按照最后两个维度执行矩阵乘法,而dot函数则会考虑数组的批处理维度。
-
-
注意事项
-
matmul函数和@操作符在NumPy中不完全等价。@操作符的行为更接近于dot函数,特别是在处理高维数组时。
-
当使用matmul函数进行矩阵乘法时,第一个数组的最后一个维度的大小必须等于第二个数组倒数第二个维度的大小。
-
-
-
linalg.det
-
说明
- 用于计算矩阵的行列式
-
用法
- 使用linlag.det计算行列式
-
注意事项
-
只能计算二维方阵
-
如果方阵巨大,计算速度会非常慢
-
对于奇异矩阵,结果不够精确
-
-
数组元素的增删改查
resize()
-
说明
-
用于调整数组大小,如果新的大小大于原数组的大小,则会填充新的元素,如果小于原数组的大小则会进行裁剪
-
新元素会用原数组的元素进行填充
-
-
用法
-
当新的大小大于原来的大小时会用重复的使用原数组的元素进行填充
-
当新的大小小于原来的大小时会用原数组的元素进行裁剪
-
append()
-
说明
-
对于一维数组,append用于将值添加到数组的末尾
-
对于多维数组,append用于给某个轴添加行或列
-
-
参数
-
arr
- 输入的数组
-
values
- 要添加到arr末尾的值
-
axis
-
沿着哪个轴附加values。如果arr是一维数组,axis参数无效。
-
对于多维数组,axis默认为None,表示将values扁平化后附加到arr的末尾。
-
-
-
用法
- 对于一维数组,append用于将值添加到数组的末尾
-
对于多维数组,如果设定了axis轴则给轴向添加行或列,对于如果未设置axis,则先展平原数组在追加数组
insert()
-
说明
- 用于在数组指定位置插入值
-
参数
-
arr
- 输入的数组。
-
obj
- 插入值的索引位置。对于一维数组,它是一个整数。对于多维数组,它可以是整数或元组。
-
values
- 要添加到arr末尾的值
-
axis
-
沿着哪个轴插入values。如果arr是一维数组,axis参数无效。
-
对于多维数组,axis默认为None,表示将values扁平化后附加到arr的末尾。
-
-
-
用法
-
一维数组
-
单个位置插入一个值
-
多个位置插入相同值
-
多个位置插入多个值
-
-
多维数组
-
单个位置插入单个值
-
多个位置插入相同值
-
多个位置插入不同值
-
如果不设置axis则会先展平再插入
-
-
delete()
-
说明
- 用于从数组中删除指定的子数组,并返回一个新的数组
-
参数
-
arr
- 输入的数组。
-
obj
- 要删除的子数组的索引。对于一维数组,它是一个整数或切片对象。对于多维数组,它可以是整数、切片对象或整数数组。
-
axis
- 沿着哪个轴删除子数组。axis指定了删除操作发生的轴。
-
-
用法
-
一维数组
-
一维数组删除单个元素
-
一维数组删除多个元素
-
一维数组使用切片进行索引
-
-
多维数组
-
多维数组删除单个元素
-
多维数组删除多个元素
-
多维数组未设置axis时会先展平再进行删除元素
-
-
argwhere()
-
说明
-
argwhere用于查找数组中非零元素的索引。
-
返回一个包含非零元素索引的数组,其中每个元素是一个坐标元组,对应于非零元素的位置。
-
-
参数
-
condition
- 一个布尔数组或条件表达式,用于选择数组中满足条件的元素。
-
-
用法
- 选择符合条件的元素
unique()
-
说明
-
unique 函数用于找出数组中的唯一元素,并返回已排序的结果。
-
它还可以提供唯一元素的索引、计数以及逆索引(即每个元素在唯一数组中的位置)。
-
-
参数
-
arr
- 输入数组。
-
return_index
- 可选。如果为 True,则返回唯一元素的原始索引。
-
return_inverse
- 可选。如果为 True,则返回输入数组中每个元素在唯一数组中的索引。
-
return_counts
- 可选。如果为 True,则返回每个唯一元素在原始数组中的出现次数。
-
axis
- 整数或元组,可选。指定要进行操作的轴。如果没有指定,则在扁平化后的数组上操作。如果指定了轴,则操作将沿着该轴进行。
-
-
用法
-
一维数组
-
去除重复元素
-
去除重复元素并返回唯一元素在原数组中的位置
-
去除重复元素并返回重复元素在原数组中的位置
-
去除重复元素并返回唯一元素在原数组中的出现次数
-
-
多维数组
-
去除重复的行
-
去除重复元素并返回唯一元素行在原数组中的位置
-
去除重复元素并返回重复元素在原数组中的位置
-
去除重复元素并返回唯一元素在原数组中的出现次数
-
-