【问题标题】:Vectorized way of accessing row specific elements in a numpy array访问 numpy 数组中行特定元素的矢量化方式
【发布时间】:2014-09-03 17:12:27
【问题描述】:

我有一个二维 NumPy 数组和一组索引,其大小是 NumPy 数组的第一个维度。

X = np.random.rand(5, 3)
a = np.random.randint(0, 3, 5)

我需要做类似的事情

for i, ind in enumerate(a):
    print X[i][ind]

有没有一种矢量化的方式来做到这一点?

【问题讨论】:

    标签: python numpy vectorization


    【解决方案1】:

    给你:

    X = np.random.rand(5, 3)
    a = np.random.randint(0, 3, 5)
    
    In [12]: X[np.arange(a.size), a]
    Out[12]: array([ 0.99653335,  0.30275346,  0.92844957,  0.54728781,  0.43535668])
    In [13]: for i, ind in enumerate(a):
                print X[i][ind]
    #   ....:
    #0.996533345844
    #0.30275345582
    #0.92844956619
    #0.54728781105
    #0.435356681672
    

    我在这里假设您不需要将每个值放在单独的行上,而只想提取这些值。

    【讨论】:

    • 现在,这有多简单。该死!
    猜你喜欢
    • 2016-10-16
    • 1970-01-01
    • 1970-01-01
    • 2012-10-31
    • 2018-02-25
    • 2021-01-14
    • 2021-11-16
    • 2018-06-05
    相关资源
    最近更新 更多