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

Numpy中连续索引操作的更简洁等价实现方法求助

更简洁的NumPy数组索引等价实现

给定3维NumPy数组:

import numpy as np

arr = np.array([[[ 0,  1],
        [ 2,  3],
        [ 4,  5]],

       [[ 6,  7],
        [ 8,  9],
        [10, 11]],

       [[12, 13],
        [14, 15],
        [16, 17]]])

原代码通过两次索引得到目标结果:

idx0, idx1 = [0,1], [0,2]
result = arr[idx0,...][:,idx1,:]

返回结果:

array([[[ 0,  1],
        [ 4,  5]],

       [[ 6,  7],
        [10, 11]]])

更优的单次索引实现

可以利用np.ix_生成多维索引网格,直接完成单次索引,避免创建中间数组,更简洁高效:

idx0, idx1 = [0,1], [0,2]
result = arr[np.ix_(idx0, idx1), :]

或者通过手动扩展索引维度实现等价效果:

result = arr[idx0[:, np.newaxis], idx1, :]

说明

原代码的两次索引会先创建一个中间数组(arr[idx0,...]的输出),再对这个中间数组做二次索引。而上述单次索引方式直接从原数组中定位目标元素,既节省内存开销,又提升了执行效率。

内容的提问来源于stack exchange,提问作者Dom Byrne

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:54:22