Numpy数组选取
一维数组元素的选取与Python列表的切片操作很相似。但与列表不同的是,选取的数据组成的新数组与原数组共享一个内存存储空间,即更改新数组中某个元素的值,原数组也会产生相应变化。
一维数组元素的选取
- 单一元素的选取与列表、元组的选取方式相同,均采用下标的方式。
- 使用负数下标可以反向选择数组中的元素
- 使用切片作为下标可以选取数组中的一部分。
数组名称[start:end:step]
1)start:开始索引。
如省略开始索引,则开始索引值为0。
2)end:结束索引。
如省略结束索引,则结束索引值为数组对应元素最大索引值。不包括结束索引。
3)step:步长。
如省略步长,则步长值为1。import numpy as np arr2 = np.arange(10) # 选取索引为0(包含0)到索引为2(不包含)的元素且步长为1(即第1个和第2个元素) print(arr2[0:2:1]) # 选取索引为0(包含)到索引为10(不包含)的元素且步长为2 print(arr2[0:10:2]) # 从索引为1的元素且步长为2选取元素 print(arr2[1::2]) # 从索引为1的元素开始选取元素 print(arr2[1:]) # 选取索引为0到2之间的元素 print(arr2[:2:1]) # 以步长为2选择数组中的元素 print(arr2[::2]) # 使用负数步长来翻转数组 print(arr2[::-1])
二维数组元素的选取
![[Numpy数组选取1.png]]
布尔型索引
- NumPy的数组支持布尔型的索引,即可以使用一个返回布尔值的表达式作为数组的索引内容。
select= np.array([True, False, False, True, False, False, False]) data = np.array([[-0.59108215, 0.47462331, 1.48256429, 0.63585932], [-1.22165659, 1.52967449, -0.47629308, 1.14733078], [ 0.55412323, 1.26535837, 0.5726996 , -0.07392482], [-0.85580039, 1.36760135, -0.88839855, -0.03639106], [ 1.21625468, 0.99873733, 0.73710729, 0.21114635], [ 0.95096753, -2.17702156, 0.47864476, -0.18437025], [ 1.72211463, -0.75815045, 0.42090403, 0.31997413]]) #则可以使用布尔值数组作为数据数组的索引,但需要注意两个数组维度要相符。 print(data[select]) 程序运行结果如下: array([[-0.59108215, 0.47462331, 1.48256429, 0.63585932], [-0.85580039, 1.36760135, -0.88839855, -0.03639106]])
- 还可以继续在布尔值索引的基础上进行列索引
print(data[select,2:]) print(data[select,3]) 程序运行结果如下: array([[ 1.48256429, 0.63585932], [-0.88839855, -0.03639106]]) array([ 0.63585932, -0.03639106])
花式索引
![[Numpy花式索引.png]]