Python 之numpy中二维数组与三维数组的切片

博客介绍了常见的numpy数组切片类型,如x[n,:]等。区分了二维、三维数组,强调切片时根据逗号判断元素选取方式,还指出用逗号分隔轴的索引,引号表示该轴所有元素,最后提及OpenCV多维数组与numpy数组的不同待补充。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

常见切片类型:

1、首先区分数组类型:在中括号中将m:n看做整体的前提之下,二维数组(中括号中有一个冒号),三维数组(中括号中有两个冒号)

2、需要注意到情况如:通常情况每个维度的操作结束通过逗号分割(n,或m:m,),但如n:或者m:n:表示的是从n或者m:n开始到该维度的最后元素。

3、在进行切片过程中,可以根据逗号判断切片是如何选取元素的,例如三维数组中基本模式是[个数,行数,列数],所以加入b是一个shape=(3,3,4)的三维数组时

,b[1,::]代表了行列全取的情况下,第2个数组(重点是根据逗号索引第一个逗号代表个数,后面::之前无逗号可以整体切片)

 b[:,:, 1]代表了分开取个数、行、列(重点是个数和行之后都有逗号,则分开选取而不是整体切片),分开切片个数,行全选情况下选第二列元素

补充总结:在numpy的数组中,用逗号分隔的是轴的索引,引号表示该轴下的所有元素,比如说如下数组:

a = np.array([[[3,4]], [[1,2]],[[5,7]],[[3,7]],[[1,8]]])a.shape=(5, 1, 2) 表示是三个轴,a[;,0]表示第一个轴的所有元素,和第二个轴的第一个元素(注意:当给出的索引号少于数组中的总索引数,则将已给出的索引数按顺序指派到轴上并默认将未写的索引数提取全部内容),细说就是再详细一点,a的全体内容为:[[[3,4]], [[1,2]],[[5,7]],[[3,7]],[[1,8]]]。去掉第一层方括号,其中有五个元素,每个元素为[[3,4]]这样的,所以第一个索引的范围为[0:5]。

注意:OpenCV函数返回的多维数组和常见的numpy数组的不同之处!(后续跟进补充)
 

 

参考博客: https://blog.youkuaiyun.com/zgcr654321/article/details/88015849

                  https://blog.youkuaiyun.com/sunny2038/article/details/12889059 

### Python 中二数组的表示方法 在 Python 中,二数组通常通过嵌套列表(List of Lists)来实现。这种结构可以被看作是由多个一列表组成的集合,其中每个子列表代表二数组的一行[^1]。 以下是创建和操作二数组的一个简单示例: ```python # 创建一个简单的二数组 array_2d = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] # 访问特定元素 (第二行第三列) element = array_2d[1][2] # 输出为 6 print(f"访问到的元素是: {element}") # 向二数组添加新行 new_row = [10, 11, 12] array_2d.append(new_row) # 打印更新后的二数组 for row in array_2d: print(row) ``` 上述代码展示了如何初始化一个二数组并对其进行基本的操作,例如访问单个元素以及向其追加新的行数据。 如果需要更高效的数值计算功能,则推荐使用 NumPy 库中的 `numpy.array` 来处理多数组NumPy 提供了强大的工具集用于科学计算,并支持更加复杂的索引方式[^3]。 #### 使用 NumPy 的例子 下面是如何利用 NumPy 构建操作二数组的例子: ```python import numpy as np # 定义一个二数组 np_array = np.array([ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]) # 过滤满足一定条件的数据(这里选取大于5的部分) filtered_data = np_array[np_array > 5] print("过滤后的大于5的数据:", filtered_data) # 修改部分区域内的值 np_array[:2, :2] = [[-1, -2], [-3, -4]] print("\n修改前两行前两列为负数的结果:") print(np_array) ``` 此段脚本不仅演示了怎样建立 NumPy 数组,还包含了基础的选择切片技术和布尔掩码技术来进行复杂查询。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值