numpy高级索引

numpy学习专题

七、高级索引

高级索引

Numpy 比一般的python序列提供更多的索引方式。除了之前看到的用整数和切片的索引外,数组可以由整数数组索引、布尔索引 整数数组索引

获取数组中(0,0),(1,1)和(2,0)位置处的元素

import numpy as np
arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(arr[[0,1,2],[0,1,0]])
[1 5 7]
行索引是[0,0]和[3,3],而列索引是[0,2]和[0,2]
import numpy as np
arr = np.array([[0,1,2],[3,4,5],[6,7,8],[9,10,11]])
print(arr,"\n")
rows = np.array([[0,0],[3,3]])
cols = np.array([[0,2],[0,2]])
arr2 = arr[rows,cols]
print("数组的四角元素是:")
print(arr2)
print("\n",arr[1:3,[0,1]])
[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]] 

数组的四角元素是:
[[ 0  2]
 [ 9 11]]

 [[3 4]
 [6 7]]
布尔索引通过布尔运算(如:比较运算符)来获取符合指定条件的元素的数组
#打印大于5的元素
import numpy as np
arr = np.array([[0,1,2],[3,4,5],[6,7,8],[9,10,11]])
print(arr[arr>5])

#使用了~(取补运算符)来过滤NaN
arr = np.array([np.nan,1,2,np.nan,3,4,5])
print(arr[~np.isnan(arr)])

[ 6  7  8  9 10 11]
[1. 2. 3. 4. 5.]

一定要支持作者哦

### 关于 NumPy 高级索引的教程 #### 使用整数索引访问特定位置的数据 NumPy 支持通过整数列表或数组来指定要获取的位置,从而实现更复杂的多维数组元素选取。这种方式允许直接定位到所需的具体坐标点。 ```python import numpy as np arr = np.array([[1, 2], [3, 4], [5, 6]]) print(arr[[0, 1, 2], [0, 1, 0]]) # 输出: [1 4 5] ``` 此代码片段展示了如何利用两个整数序列分别对应行号和列号来进行精确取值[^1]。 #### 利用布尔掩码筛选符合条件的数据项 当面对复杂条件下的数据过滤需求时,可以创建一个与目标数组形状相同的布尔型数组作为掩码,进而完成对原始数据的选择性提取工作。 ```python mask = (arr > 2) filtered_data = arr[mask] print(filtered_data) # 输出大于2的所有元素组成的扁平化一维数组 ``` 上述例子说明了怎样构建并应用布尔表达式得到满足给定逻辑关系的结果集[^2]。 #### 实现花式索引来执行自定义模式读写操作 所谓“花式”,即指采用非连续内存布局下标的特殊形式——比如传递一个多维度的索引矩阵去一次性取得多个不相邻区域内的子块;或是借助广播机制配合标量参数共同作用达到动态调整输出结构的目的。 ```python fancy_index = np.array([True, False]) selected_rows = arr[fancy_index] print(selected_rows) indices_for_selection = np.ix_([0, 2], [0, 1]) submatrix = arr[indices_for_selection] print(submatrix) ``` 这里给出了两种不同风格的实例:一种是基于真伪判断挑选出行向量;另一种则是运用 `np.ix_` 函数构造笛卡尔积式的组合索引来截取出矩形范围内的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值