Numpy是否有函数可提取数组中两个向量间的区域?
Numpy中实现指定端点间数组切片的方法
Numpy本身就支持这种需求,不需要额外引入函数,直接用多维索引切片就能搞定。你说的两个端点向量,其实对应了切片的起始和结束索引(Numpy切片遵循左闭右开规则):(0,1)是起始行0、起始列1,(2,3)是结束行2、结束列3。
用你的示例来实操:
先定义数组:
import numpy as np arr = np.array([[1,2,3], [4,5,6], [7,8,9]])
直接用切片语法就能得到目标结果:
result = arr[0:2, 1:3]
输出结果:
array([[2, 3], [5, 6]])
如果偏好arr[(0,1):(2,3)]这种调用形式,可以自己封装一个轻量函数来适配:
def slice_by_endpoints(arr, start, end): # 确保起始和结束端点的维度和数组匹配 assert len(start) == arr.ndim and len(end) == arr.ndim slices = tuple(slice(s, e) for s, e in zip(start, end)) return arr[slices] # 调用示例 result = slice_by_endpoints(arr, (0,1), (2,3))
这个函数可以适配任意维度的数组,只要传入的端点向量长度和数组维度一致就行。
内容的提问来源于stack exchange,提问作者acoolguy
相关产品推荐
相关产品推荐

