【问题标题】:how to get rows of 2d numpy array by index array如何通过索引数组获取二维 numpy 数组的行
【发布时间】:2021-02-27 19:09:18
【问题描述】:

我有一个如下所示的二维数组:

my_array = np.array([[1,7]
                     [2,4]
                     [3,10] 
                     [4,3] 
                     [5,23]])

我有一个如下所示的索引数组:

index_array = np.array([0,2,3])

作为输出,我想获得一个仅包含索引数组中的行的矩阵 所以输出矩阵的形状应该是(3,2),应该是这样的:

[[1,7]
 [3,10]
 [4,3]]

该解决方案不应使用 for 循环,而应适用于任何二维矩阵。 在此先感谢:)

【问题讨论】:

标签: python arrays numpy scipy


【解决方案1】:

您可以使用numpy array slicing notation 来选择您的行:D

import numpy as np

my_array = np.array([[1,7],
                     [2,4],
                     [3,10], 
                     [4,3],
                     [5,23]])

print(my_array[[0,2,3]])

my_array[index_array] 也可以使用

【讨论】:

    【解决方案2】:

    不确定列表推导是否符合 for 循环,但您可以使用以下单行解决方案:

    [list(my_array[i]) for i in index_array]
    

    这将返回[[1, 7], [3, 10], [4, 3]]

    【讨论】:

      最近更新 更多