给定3D数组:

a = np.arange(3*4*5).reshape(3,4,5)
array([[[ 0,  1,  2,  3,  4],
        [ 5,  6,  7,  8,  9],
        [10, 11, 12, 13, 14],
        [15, 16, 17, 18, 19]],

       [[20, 21, 22, 23, 24],
        [25, 26, 27, 28, 29],
        [30, 31, 32, 33, 34],
        [35, 36, 37, 38, 39]],

       [[40, 41, 42, 43, 44],
        [45, 46, 47, 48, 49],
        [50, 51, 52, 53, 54],
        [55, 56, 57, 58, 59]]])

我想创建以下矩阵:

result = 
array([[20, 21, 22, 23, 24],
       [ 5,  6,  7,  8,  9],
       [50, 51, 52, 53, 54],
       [55, 56, 57, 58, 59]])

使用索引idx = [1,0,2,2]

推荐答案

假设数组有三个维度(x,y,z),因为要在yth方向上为每行取一个值,所以可以执行以下操作:

a[idx, range(a.shape[1])]

输出:

array([[20, 21, 22, 23, 24],
       [ 5,  6,  7,  8,  9],
       [50, 51, 52, 53, 54],
       [55, 56, 57, 58, 59]])

Python相关问答推荐

Pandas实际上如何对基于自定义的索引(integer和非integer)执行索引

PMMLPipeline._ fit()需要2到3个位置参数,但给出了4个位置参数

在Python中管理打开对话框

如何使用根据其他值相似的列从列表中获取的中间值填充空NaN数据

如何在给定的条件下使numpy数组的计算速度最快?

如何在WSL2中更新Python到最新版本(3.12.2)?

Scrapy和Great Expectations(great_expectations)—不合作

如何并行化/加速并行numba代码?

joblib:无法从父目录的另一个子文件夹加载转储模型

LocaleError:模块keras._' tf_keras. keras没有属性__internal_'''

如何获取Python synsets列表的第一个内容?

使用polars. pivot()旋转一个框架(类似于R中的pivot_longer)

ModuleNotFoundError:Python中没有名为google的模块''

为什么dict. items()可以快速查找?

Python日志(log)库如何有效地获取lineno和funcName?

如何在Python中解析特定的文本,这些文本包含了同一行中的所有内容,

有没有一种方法可以在朗肯代理中集成向量嵌入

PYODBC错误(SQL包含-26272个参数标记,但提供了235872个参数,HY 000)

Wagail:当通过外键访问索引页时,如何过滤索引页的子项

S最大值除以最小值,然后减1的结果是什么?