You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 11:12:39