如何按列索引在Numpy Array的每一行中选择一个元素?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (63)

有没有更好的方法来获得从 "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]
提问于
用户回答回答于

您可以从给定的数组中选择numpy.choose从索引数组构造数组。

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])
用户回答回答于

[input_array[enum, item] for enum, item in enumerate(select_id)]

扫码关注云+社区