我正在实现一个决策算法。在daily_choices
数组中,每天都有两种水果可以选择,例如:
daily_choices = np.array([['apple','orange'],['strawberry','orange'],['watermelon','apple']])
现在我有一个包含每天我要选择的水果的列表:
decision = [0,1,0]
我知道一些基本的切片操作,例如daily_choices[:,0]
,意思是将第一列切出来,而daily_choices[:,1]
则是将第二列切出来。
我想知道是否有一种方法可以通过类似以下的方式切片取出第一行的第一列、第二行的第二列、第三行的第一列:
期望结果
Input => daily_choices[:,[0,1,0]]
Output => ['apple', 'orange', 'watermelon']
然而,它没有给我想要的结果
我知道我可以通过使用zip
和for循环
来实现我想要的结果
daily_decision
daily_decision = []
for choices, index in zip(daily_choices, decision):
daily_decision.append(choices[index])
daily_decision
但我想知道是否有可能用一行代码来实现。
daily_decision = [choices[index] for choices, index in zip(daily_choices, decision)]
- Mohit Motwani