博客
关于我
python三大库之--numpy(二)
阅读量:797 次
发布时间:2023-03-09

本文共 1779 字,大约阅读时间需要 5 分钟。

NumPy剖分与高级索引操作

NumPy的剖分操作是对数组元素进行高效操作的一种强大方式,适用于处理数组中的元素位置和选择。剖分操作在数据处理、数据分析和科学计算中发挥着重要作用。本文将深入探讨NumPy数组的剖分、索引以及广播机制。


一、剖分操作

NumPy数组的剖分操作类似于Python中的列表剖分,通过指定起始、结束和步长来选择数组中的一部分数据。剖分操作可以通过slice对象实现,起始位置包括,结束位置不包括,步长决定元素的间隔。

示例代码

import numpy as npdef a1():    b = np.arange(10)    x = slice(1, len(b), 2)    print("原数组:", b)    print("切片对象:", x)    print("切片结果:", b[x])a1()

输出结果

原数组:[0 1 2 3 4 5 6 7 8 9]切片对象:slice(1, 10, 2)切片结果:[1 3 5 7 9]

二、高级索引

NumPy的高级索引允许使用多维数组或布尔数组来定位数组中的元素,提供了更高的灵活性和效率。高级索引操作可以根据需求灵活定制,适用于复杂的数据访问场景。

1. 整数数组索引

整数数组索引通过引用目标数组的特定位置来定位元素,返回的是新数组副本,修改不会影响原数组。

示例代码

def two():    array_one = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]])    print("原数组:")    print(array_one)    array_one = array_one[[0, 0, -1, -1], [0, -1, 0, -1]]    print("四个角元素:", array_one)two()

输出结果

原数组:[[0 1 2] [3 4 5] [6 7 8] [9 10 11]]四个角元素:[0 2 9 11]

2. 布尔索引

布尔索引通过比较运算符生成布尔数组,用于筛选符合条件的元素。布尔数组中的True表示选中对应元素。

示例代码

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])bool_arr = arr > 5print(bool_arr)print(arr[bool_arr])a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print(a[:, a[1] > 3])

输出结果

[False False False False False True True True True True][6 7 8 9 10][[1 2 3] [4 5 6] [7 8 9]]

三、广播机制

广播是NumPy处理数组运算的重要机制,用于解决不同形状数组之间的运算问题。广播机制通过在维度上补充长度为1的维度,使得数组能够按元素运算。

示例代码

arr = np.array([[1, 2, 3], [4, 5, 6]])brr = np.array([[10, 20, 30]])crr = arr + brrprint(crr)

输出结果

[[11 22 33] [14 25 36]]

四、数组遍历

在NumPy中,遍历数组可以通过迭代器实现,支持灵活的遍历方式。nditer是强大的迭代器工具,提供多种选项来提升遍历效率。

1. 遍历第一维度

import numpy as nparr = np.array([[1, 2, 3], [4, 5, 6]])for i in arr:    print(i)

输出结果

[1 2 3][4 5 6]

2. 使用nditer

arr = np.array([[1, 2, 3], [4, 5, 6]])for i in np.nditer(arr, order='F'):    print(i)

输出结果

1 2 34 5 6

通过上述剖分、高级索引、广播和遍历操作,NumPy极大地提升了数据处理效率,成为科学计算中不可或缺的工具。这些操作不仅支持快速数据访问,还能通过高效的内存管理实现大规模数据处理。

转载地址:http://rjlfk.baihongyu.com/

你可能感兴趣的文章
python3与django中@property详解
查看>>
python3中如何表示无穷大
查看>>
Python3中提示:no module named 'wxpy'
查看>>
python3中选择文件对话框的格式打开和保存图片
查看>>
python3为什么print永远都是地址_Python3 print 函数用法总结
查看>>
Python3之uuid模块
查看>>
Python3之写入Excel文档(xlsxwriter)
查看>>
Python3之打印操作打印流重定向(下)
查看>>
python3判断字典、列表、元组为空以及字典是否存在某个key的方法
查看>>
Python3利用pymysql操作 MySQL
查看>>
python3处理json文件中含有中文dumps的应用
查看>>
Python3子进程输出
查看>>
Python3学习笔记3,变量、运算符
查看>>
Python3学习笔记(urllib模块的使用)
查看>>
python3安装scapy_Linux下安装scapy-python3
查看>>
python3实现socket通信
查看>>
Python关于numpy.transpose函数详细解析附代码
查看>>
Python3导入自定义模块的3种方式
查看>>
python3打开txt文件_使用Python 3从文本文件读取句子并添加到列表中
查看>>
python3爬虫抓取智联招聘职位信息代码
查看>>