前言
NumPy 提供了强大的高维数组处理能力,通过高级索引(也称为索引切片),可以灵活地访问和操作数组中的元素。废话不多,直接开整!!!
使用
1、 整数数组索引
import numpy as nparr = np.array([1, 2, 3, 4, 5, 6])
indices = np.array([0, 2, 5])
print(arr[indices]) # 输出: [1 3 6]
2、 布尔索引
import numpy as nparr = np.array([1, 2, 3, 4, 5, 6])
boolean_indices = np.array([True, False, True, False, True, True])
print(arr[boolean_indices]) # 输出: [1 3 5 6]
3、 花式索引
大家可能对这个名称有所不解,这里解释一下什么叫做花式索引。
所谓还是索引就是指的是利用整数数组进行索引,花式索引根据索引数组的值作为目标数组的某个轴的下标来取值。
对于使用一维整型数组作为索引,如果目标是一维数组,那么索引的结果就是对应位置的元素,如果目标是二维数组,那么就是对应下标的行。
花式索引跟切片不一样,它总是将数据复制到新数组中。
import numpy as np# 花式索引
a = np.arange(8)
print('原数组')
print(a)
print('\n')
print('使用花式索引后的数组')
a1 = a[[2, 5]]
print(a1)# 输出:
# 原数组
# [0 1 2 3 4 5 6 7]
#
#
# 使用花式索引后的数组
# [2 5]
二维数组使用花式索引
x = np.arange(56).reshape(7, 8)
print('原二维数组')
print(x)
print('\n')
print('使用花式索引后的数组')
print('二维数组读取指定下标对应的行')
x1 = x[[3, 5, 1]]
print(x1)# 原二维数组
# [[ 0 1 2 3 4 5 6 7]
# [ 8 9 10 11 12 13 14 15]
# [16 17 18 19 20 21 22 23]
# [24 25 26 27 28 29 30 31]
# [32 33 34 35 36 37 38 39]
# [40 41 42 43 44 45 46 47]
# [48 49 50 51 52 53 54 55]]
#
#
# 使用花式索引后的数组
# 二维数组读取指定下标对应的行
# [[24 25 26 27 28 29 30 31]
# [40 41 42 43 44 45 46 47]
# [ 8 9 10 11 12 13 14 15]]
4、 numpy.newaxis进行索引(增加维度)
import numpy as nparr = np.array([1, 2, 3, 4, 5, 6])
reshaped_arr = arr[:, np.newaxis] # 增加一个维度
print(reshaped_arr)
# 输出:
# [[1]
# [2]
# [3]
# [4]
# [5]
# [6]]
5、 np.ix_进行索引(广播)
import numpy as nparr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
broadcasted_indices = np.ix_([arr1, arr2])
print(broadcasted_indices)
# 输出:
# (array([[1],
# [2],
# [3]]), array([[4, 5, 6]]).T)
本文提供的内容仅用于个人学习、研究,如有相关权利人的合法权利,请及时通知作者,予以删除!