博客
关于我
python三大库之--numpy(二)
阅读量:799 次
发布时间: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/

你可能感兴趣的文章
Python+Selenium自动化测试项目实战
查看>>
Python+Selenium自动化测试项目实战【建议收藏】
查看>>
Python+Selenium自动化测试:Page Object模式
查看>>
python+selenium进行cnblog的自动化登录测试
查看>>
Python函数只返回第一个值而不是数据框
查看>>
Python+SQL实战:京东用户行为数据分析案例解析(上)
查看>>
Python+SQL实战:京东用户行为数据分析案例解析(下)
查看>>
PYTHON+Twisted+sqlanydb=ABORT()
查看>>
Python函数之返回值、作用域和局部变量
查看>>
Python+统计学 | 探索常用的数据分析统计分布
查看>>
python, selenium中用于切换帧的函数
查看>>
python函数
查看>>
python----线程、进程、协程的区别及多线程详解
查看>>
python---5
查看>>
python---使用celery分布式系统异步发送短信(云通讯)来验证登录
查看>>
python--003--百分号字符串拼接、format
查看>>
Python--10、线程
查看>>
Python--Redis实战:第四章:数据安全与性能保障:第4节:复制
查看>>
python--基本代码规范
查看>>
Python--抽象类接口类
查看>>