自学内容网 自学内容网

numpy的花式引用

NumPy 中,花式索引(Fancy Indexing)是一种强大的数组索引方式,允许使用整数数组或布尔数组来访问数组的元素,而不仅仅是通过传统的切片操作。这种方式特别适合从数组中根据条件或特定位置获取元素。下面详细介绍花式索引的几种形式:

1. 整数数组索引(Integer Array Indexing)

通过整数数组来指定数组中要访问的元素,可以是多维的。

import numpy as np
arr1=np.array([1,2,3,4,5,6,7,8])
print(arr1[[0,1,5]])

 当然,也可以用index存储指定数组的下标:

import numpy as np
arr1=np.array([1,2,3,4,5,6,7,8])
index=[0,1,5]
print(arr1[index])

同理对二维数组我们也可以进行相同操作

arr2=np.arange(1,17).reshape(4,4)
print(arr2[[0,1,2,3],[0,1,2,3]])
arr2=np.arange(1,17).reshape(4,4)
row=[0,1,2,3]
col=[0,1,2,3]
print(arr2[row,col])

这两行代码都可以打印出二维数组主对角线的元素。 

 

2. 布尔索引(Boolean Indexing)

布尔索引允许通过布尔条件对数组进行筛选。你可以传入一个布尔数组,数组中 True 的位置会保留下来,False 的位置会被过滤掉。

arr = np.array([1, 2, 3, 4, 5, 6])

# 创建一个布尔条件,筛选出所有大于 3 的元素
condition = arr > 3
print(condition)  # 输出: [False False False  True  True  True]

# 通过布尔数组进行索引
result = arr[condition]
print(result)  # 输出: [4 5 6]

布尔索引是一种非常强大的方式,可以根据条件快速从数组中获取子集,特别适用于数据筛选操作。

 

3. 组合整数和切片索引

你可以将整数索引和切片一起使用,以选择特定的元素或子数组。

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 使用整数选择第 1 行,然后使用切片选择第 1 列到最后一列的元素
result = arr[1, 1:]
print(result)  # 输出: [5 6]

4. 赋值与花式索引 

arr = np.array([10, 20, 30, 40, 50])

# 将第 0, 2, 4 个位置的元素修改为 100
arr[[0, 2, 4]] = 100
print(arr)  # 输出: [100  20 100  40 100]


原文地址:https://blog.csdn.net/2301_80744520/article/details/142365537

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!