python学习day11

4.数组属性

4.1 shape

返回一个元组,元组中的每个元素表示数组在对应维度上的大小。元组的长度等于数组的维度数。

shape 属性功能:

  1. 返回一个由数组维度构成的元组

  2. 通过赋值,可以用来调整数组维度的大小

4.2 数组维度

数组的维度就是一个数组中的某个元素,当用数组下标表示的时候,需要用几个数字来表示才能唯一确定这个元素,这个数组就是几维

ndmin 是 NumPy 中用于创建数组时指定最小维度的参数。它通常在 numpy.array() 函数中使用。通过 ndmin,你可以确保生成的数组至少具有指定的维度。

ndim 是 NumPy 数组的一个属性,用于返回数组的维度数(即数组的秩)。它表示数组有多少个维度。

4.3 flags

flags 属性功能:

  1. 返回 ndarray 数组的内存信息

 

5.切片

ndarray 对象的内容可以通过索引或切片来访问和修改,与 Python 中 list 的切片操作一样;

5.1 slice()

在 Python 中,slice 可以作为一个对象来使用。你可以创建一个 slice 对象,然后使用它来获取序列的片段。

参数:

  • start 是切片开始的位置(包含该位置)。

  • stop 是切片结束的位置(不包含该位置)。

  • step 是切片的步长,即选取元素的间隔。

 

6.高级索引

NumPy 中的高级索引指的是使用整数数组、布尔数组或者其他序列来访问数组的元素。相比于基本索引,高级索引可以访问到数组中的任意元素,并且可以用来对数组进行复杂的操作和修改。

6.1 整数数组索引

整数数组索引是指使用一个数组来访问另一个数组的元素。这个数组中的每个元素都是目标数组中某个维度上的索引值。

适用于需要访问非连续元素或特定位置元素的场景。

注意:返回的新数组是一个副本,修改它不会影响原数组。

 

6.2 布尔索引

布尔索引通过布尔运算(如:比较运算符)来获取符合指定条件的元素的数组。

逻辑运算符

  • &:与运算,组合多个条件。

  • |:或运算,组合多个条件。

  • ~:非运算,取反条件。

 

7.广播(*)

广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。这要求维数相同,且各维度的长度相同,如果不相同,可以通过广播机制,这种机制的核心是对形状较小的数组,在横向或纵向上进行一定次数的重复,使其与形状较大的数组拥有相同的维度。

广播规则

  1. 维度匹配:如果两个数组的维度数不同,维度数较少的数组会在前面补上长度为 1 的维度。

     2.形状匹配:如果两个数组在某个维度上的长度不同,但其中一个数组在该维度上的长度为 1,则该数组会沿着该维度进行广播。  

 

3.不匹配:如果两个数组在某个维度上的长度既不相同也不为 1,则广播失败,抛出 ValueError。

 

8.遍历数组

8.1 遍历数组的第一维度

for i in arr: 遍历数组的第一维度,即按行或列的顺序逐个访问元素。

返回的是数组的子数组(如行或列),而不是单个元素。

8.2 nditer逐个访问元素

nditer 是 NumPy 中的一个强大的迭代器对象,用于高效地遍历多维数组。nditer 提供了多种选项和控制参数,使得数组的迭代更加灵活和高效。

控制参数

nditer 提供了多种控制参数,用于控制迭代的行为。

9.数组操作

9.1 数组变维

函数名称函数介绍
reshape在不改变数组元素的条件下,修改数组的形状
flat属性返回是一个迭代器,可以用 for 循环遍历其中的每一个元素
flatten以一维数组的形式返回一份数组的副本,对副本的操作不会影响到原数组
ravel返回一个连续的扁平数组(即展开的一维数组),与 flatten不同,它返回的是数组视图(修改视图会影响原数组)

9.1.1 reshape

reshape() 函数允许你在不改变数组数据的情况下,改变数组的维度。

reshape() 返回的是一个新的数组,原数组的形状不会被修改。reshape() 可以用于多维数组,例如将一个一维数组重塑为二维数组。

但是,reshape后产生的新数组是原数组的一个视图,即它与原数组共享相同的数据,但可以有不同的形状或维度,且对视图的修改会直接影响原数组。

元素总数必须匹配:新形状中的元素总数必须与原数组中的元素总数相同。

例如,一个长度为6的一维数组可以被重塑为 (2, 3) 或 (3, 2),表示原数组被重塑为2行3列或3行2列的数组,但不能被重塑为 (2, 2)。

9.1.2 flat

返回一个一维迭代器,用于遍历数组中的所有元素。无论数组的维度如何,ndarray.flat属性都会将数组视为一个扁平化的一维数组,按行优先的顺序遍历所有元素。

9.1.3 flatten()

用于将多维数组转换为一维数组。flatten() 返回的是原数组的一个拷贝,因此对返回的数组进行修改不会影响原数组。

9.1.4 ravel()

用于将多维数组转换为一维数组。与 flatten() 不同,ravel() 返回的是原数组的一个视图(view),而不是副本。因此,对返回的数组进行修改会影响原数组。

9.2 数组转置

 

9.3 升维和降维

多维数组(也称为 ndarray)的维度(或轴)是从外向内编号的。这意味着最外层的维度是轴0,然后是轴1,依此类推。

 

9.4 连接数组

9.5 分割数组

9.6 矩阵运算

np.dot

是一个通用的点积函数,适用于多种维度的数组。

  • 对于二维数组(矩阵),np.dot 等价于矩阵乘法。

  • 对于一维数组(向量),np.dot 计算的是向量的点积(内积)。

np.matmul

是专门用于矩阵乘法的函数,适用于二维及更高维度的数组。

np.linalg.det

计算一个方阵(行数和列数相等的矩阵)的行列式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值