加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python-高级切片:给定索引列表,从numpy数组中选择不同的元素

发布时间:2020-12-17 17:39:09 所属栏目:Python 来源:网络整理
导读:我正在执行决策算法.在daily_choices数组中,每一天都有两个结果可供选择,例如: daily_choices = np.array([['apple','orange'],['strawberry',['watermelon','apple']]) 现在,我有了一个清单,其中包含每天要选择的水果: decision = [0,1,0] 我知道一些基本

我正在执行决策算法.在daily_choices数组中,每一天都有两个结果可供选择,例如:

daily_choices = np.array([['apple','orange'],['strawberry',['watermelon','apple']])

现在,我有了一个清单,其中包含每天要选择的水果:

decision = [0,1,0] 

我知道一些基本的切片,例如daily_choices [:,0],这意味着将第一列切片,而daily_choices [:,1]意味着将第二列切片.

我想知道是否可以通过执行以下操作来切片第一行中的第一列,第二行中的第二列,第三行中的第一列

预期结果

Input  =>  daily_choices[:,[0,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

但我想知道是否有可能一站式完成.

最佳答案
使用列表理解

choices = [['apple','apple']]
decisions = [0,0] 

daily_decisions = [day[decision] for day,decision in zip(choices,decision)]
print(daily_decisions)

[‘apple’,‘orange’,‘watermelon’]

使用numpy

这也可以用NumPys Integer Array Indexing解决:

import numpy as np
daily_choices = np.array([['apple','apple']])
decisions = [0,0]

daily_decision = daily_choices[range(len(daily_choices)),decisions]
print(daily_decision)

[‘apple’,‘watermelon’]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读