MST

星途 面试题库

面试题:Python中NumPy如何进行数组的切片与索引操作

请说明在Python的NumPy库中,如何对一维、二维数组进行切片操作以获取特定位置或范围的数据,以及如何使用整数索引和布尔索引来提取数组中的元素,同时举例说明不同索引方式在实际应用中的场景。
38.6万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

一维数组切片操作

  1. 获取特定位置元素:使用整数索引,索引从0开始。例如:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr[2])  # 获取索引为2的元素,输出3
  1. 获取范围数据:使用切片语法start:stop:step。例如:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr[1:4])  # 获取索引1到3(不包含4)的元素,输出[2 3 4]
print(arr[::2])  # 从开始到结束,步长为2,输出[1 3 5]

二维数组切片操作

  1. 获取特定位置元素:通过两个整数索引指定行和列。例如:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr[1, 2])  # 获取第2行第3列的元素,输出6
  1. 获取范围数据:对行和列分别使用切片语法。例如:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr[0:2, 1:3])  
# 获取第1到2行(不包含2),第2到3列(不包含3)的元素
# 输出[[2 3]
#      [5 6]]

整数索引实际应用场景

  • 图像像素操作:在处理图像时,图像可以表示为三维数组(高度、宽度、颜色通道)。如果要获取图像中特定位置的像素值,可以使用整数索引。例如,要获取图像中某个特定点的红色通道值:
import numpy as np
# 假设图像是一个100x100的RGB图像
image = np.random.randint(0, 256, size=(100, 100, 3), dtype=np.uint8)
red_value = image[50, 50, 0]  # 获取第50行,第50列像素的红色通道值

布尔索引

  1. 提取数组中的元素:通过布尔数组进行索引,布尔数组与原数组形状相同,True表示选取对应位置的元素,False表示不选取。例如:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
bool_index = arr > 3
print(arr[bool_index])  # 输出[4 5]
  1. 在二维数组中的应用
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
bool_index = arr % 2 == 0
print(arr[bool_index])  
# 输出[2 4 6 8],获取所有偶数元素

布尔索引实际应用场景

  • 数据分析:在数据分析中,经常需要根据条件筛选数据。例如,有一个包含学生成绩的数组,要筛选出成绩大于90分的学生成绩:
import numpy as np
scores = np.array([85, 92, 78, 95, 88])
high_scores = scores[scores > 90]
print(high_scores)  # 输出[92 95]