按列索引在一个整型数组的每一行中选择一个元素

发布于 2021-01-29 15:01:18

是否有更好的方法从“ input_array”和“ select_id”获取“ output_array”

我们可以摆脱range( input_array.shape[0] )吗?

>>> input_array = numpy.array( [ [3,14], [12, 5], [75, 50] ] )
>>> select_id = [0, 1, 1]
>>> print input_array
[[ 3 14]
 [12  5]
 [75 50]]

>>> output_array = input_array[  range( input_array.shape[0] ), select_id ]
>>> print output_array
[ 3  5 50]
关注者
0
被浏览
85
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您可以从给定的数组中选择,使用numpy.choose该数组可以从索引数组(在您的情况下select_id)和一组数组(在您的情况下input_array)中构造一个数组以供选择。但是,您可能首先需要转置input_array以匹配尺寸。下面显示了一个小示例:

    In [101]: input_array
    Out[101]: 
    array([[ 3, 14],
           [12,  5],
           [75, 50]])
    
    In [102]: input_array.shape
    Out[102]: (3, 2)
    
    In [103]: select_id
    Out[103]: [0, 1, 1]
    
    In [104]: output_array = np.choose(select_id, input_array.T)
    
    In [105]: output_array
    Out[105]: array([ 3,  5, 50])
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看