是否有更好的方法从“ input_array”和“ select_id”获取“ output_array”?
“ input_array”和“ select_id”
“ output_array”
我们可以摆脱range( input_array.shape[0] )吗?
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]
您可以从给定的数组中选择,使用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])