您的位置:首页 > 教程笔记 > 综合教程

索引多维 numpy 数组中的多个元素

2024-02-24 18:43:52 综合教程 95

问题内容

我想使用另一个索引数组提取给定多维 numpy 数组的元素。但是它的行为并不符合我的预期。下面是一个简单的例子:

import numpy as np

a = np.random.random((3, 3, 3))
idx = np.asarray([[0, 0, 0], [0, 1, 2]])

b = a[idx]
print(b.shape)  # expect (2, ), got (2, 3, 3, 3)

为什么会这样呢?我应该如何修改代码以使 仅包含两个元素: 和 ?

正确答案

您正在寻找 numpy 高级索引

/link/2d661a763280f48803f3c9ba8ba0e00b

在您的情况下,您需要在每个轴上使用 :

a[idx[:,0], idx[:, 1], idx[:, 2]].shape == (2,)  # True

相关推荐

  • 深入了解Go语言数组的基础知识和特点

    深入了解Go语言数组的基础知识和特点

    Go语言数组的基本概念与特性1. 数组的基本概念数组是一种数据结构,它可以存储多个相同类型的数据元素。数组中的每个元素都有一个索引,索引从 0 开始。数组的长度是数组中元素的数量。2. 数组的声明数组

    综合教程 2024-02-05 12:37:36 197
  • 深入了解Go语言中数组的底层机制

    深入了解Go语言中数组的底层机制

    Go语言中数组的底层实现原理数组的存储结构Go语言中的数组是一种连续的内存块,其中每个元素都占据固定大小的空间。数组的元素类型可以是任何基本数据类型或自定义类型。数组的长度是固定的,在创建数组时指定,

    综合教程 2024-02-05 12:37:33 140
  • 了解Go语言中数组的概念

    了解Go语言中数组的概念

    数组概述数组是Go语言中一种基本的数据类型,用于存储一组具有相同类型的数据元素。数组中的每个元素都有一个唯一的索引,可以通过索引来访问该元素。数组的长度是固定的,一旦创建就不能改变。创建数组可以使用以

    综合教程 2024-02-05 12:37:32 160
  • 对Go语言中数组的定义和使用进行深入剖析

    对Go语言中数组的定义和使用进行深入剖析

    Go语言中数组的定义与用法探析数组定义Go语言中的数组是一种有序的固定长度的数据结构,可以存储相同类型的数据元素。数组的元素可以通过索引来访问,索引从0开始。数组的定义语法如下:var arrayNa

    综合教程 2024-02-05 12:37:19 17
  • 对Go语言中的数组数据结构进行深入分析

    对Go语言中的数组数据结构进行深入分析

    数组数据结构:数组是一种基本的数据结构,它包含一系列元素,每个元素都有一个索引。数组中的元素可以是任何类型,包括其他数组。数组的大小在创建时确定,并且在以后不能改变。代码示例:// 创建一个包含 5

    综合教程 2024-02-05 12:37:09 172