【问题标题】:How to slice a multi-dimensional array with another multi-dimensional array? [duplicate]如何用另一个多维数组切片一个多维数组? [复制]
【发布时间】:2020-02-04 15:23:30
【问题描述】:

我有一个二维数组:

x = np.array([[4, 5, 6],
              [7, 8, 9]])

还有一个有索引的:

a = np.array([[0, 1],
              [1, 2]])

如何在不使用循环的情况下使用 a 中每一行中的索引对每一行 x 进行切片以获得:

[[4, 5]
 [8, 9]]

【问题讨论】:

    标签: python arrays python-3.x numpy slice


    【解决方案1】:

    我知道这在技术上是一个循环,但您可以通过列表理解在一行中完成。

    print(np.array([x[i][a[i]] for i in range(0, x.shape[0])]))
    

    【讨论】:

      【解决方案2】:

      试试这个:

      import numpy as np
      x = np.array([[4, 5, 6],
                    [7, 8, 9]])
      a = np.array([[0, 1],
                    [1, 2]])
      print(np.take_along_axis(x,a,1))
      

      【讨论】:

        【解决方案3】:

        您可以使用numpy.take_along_axis

        np.take_along_axis(x,a,1)
        # array([[4, 5],
        #        [8, 9]])
        

        或手动添加第一个坐标(广播适用)

        x[np.c_[:2],a]
        # array([[4, 5],
        #        [8, 9]])
        

        【讨论】:

          猜你喜欢
          • 2012-10-18
          • 1970-01-01
          • 2019-12-03
          • 2011-07-09
          • 1970-01-01
          • 1970-01-01
          • 2020-05-30
          • 1970-01-01
          • 2014-12-25
          相关资源
          最近更新 更多