【问题标题】:Extracting data from specific columns of numpy array for each row [duplicate]从每行的numpy数组的特定列中提取数据[重复]
【发布时间】:2018-07-18 23:39:37
【问题描述】:

我正在尝试为 A 中的每一行 i 获取与列 b[i] 对应的值

我可以不使用 for 循环来执行此操作吗?

A = np.array([[35, 2, 23, 22], [44, 21, 15, 4], [44, 21, 15, 4], [37, 4, 17, 41], [33, 4, 4, 18], [35, 2, 23, 22]])
b = np.array([0,1,1,2,3,0])
C = zeros(len(b),1)
for i in range(6):
    C[i] = A[i][b[i]]   

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    由于您要按顺序索引A 的行,因此除了b 之外,您还可以使用np.arange(len(A)) 进行索引以获得所需的输出:

    A[np.arange(len(A)), b]
    
    # array([35, 21, 21, 17, 18, 35])
    

    展示它是如何工作的:

    # A np.arange(len(A)) b 数组([[35, 2, 23, 22], [0, 0] [44, 21, 15, 4], [1, 1] [44, 21, 15, 4], [2, 1] [37, 4, 17, 41], [3, 2] [33, 4, 4, 18], [4, 3] [35, 2, 23, 22]]) [5, 0]

    【讨论】:

      【解决方案2】:

      这个怎么样?

      A[:,b].diagonal()
      Out[133]: array([35, 21, 21, 17, 18, 35])
      

      【讨论】:

        猜你喜欢
        • 2013-01-17
        • 2012-01-13
        • 2018-09-29
        • 1970-01-01
        • 1970-01-01
        • 2014-12-10
        • 1970-01-01
        • 2023-03-04
        • 2016-06-06
        相关资源
        最近更新 更多