【问题标题】:How to slice/index, easily, multi-dimensional arrays in Numpy/Python?如何在 Numpy/Python 中轻松地对多维数组进行切片/索引?
【发布时间】:2020-01-20 22:55:51
【问题描述】:

我有一个大小为 (15 x 200 x 3) 的 numpy 数组,称为 rap。 我想根据这样的二维列表对其进行切片:

fragment = [0  93
            7  102
            6  43
           11  167]

这基本上是我想要返回的原始 3d 数组的前两个索引的列表。

当我尝试这样做时它会出错:

rap_sliced = rap[fragment, :]

rap_sliced = rap[list(fragment), :]
rap_sliced = rap[fragment]

我做错了什么?

【问题讨论】:

  • 结果的形状是什么?
  • 您需要提供2个列表,每个索引一个

标签: python numpy multidimensional-array indexing slice


【解决方案1】:

假设输入:

>>> fragment
[[0, 93], [7, 102], [6, 43], [11, 167]]
>>> fragment=np.array(fragment)

这将起作用:

rap[fragment[:, 0], fragment[:, 1], :]

所以

numpy_array[X, Y, Z]

其中X, Y, Z 可以是单值、列表(一维)或:

您也可以选择numpy

numpy_array[boolean_array]

其中numpy_array.shape=boolean_array.shapeboolean_array 本质上为您提供True/False,无论是否返回具有来自numpy_array 的给定坐标的值

【讨论】:

    猜你喜欢
    • 2018-11-07
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 2013-06-21
    • 1970-01-01
    • 2014-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多