Numpy数组选取

发布时间 2023-10-25 11:56:08作者: Jedi_Pz

一维数组元素的选取与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]]