为了账号安全,请及时绑定邮箱和手机立即绑定

选择 numpy.ndarray 的行,其中第一行号在某个列表中

选择 numpy.ndarray 的行,其中第一行号在某个列表中

呼啦一阵风 2021-08-05 17:50:49
我正在寻找一种简短的可读方式来选择 2D numpy.ndarray 的一些行,其中每行的第一个数字在某个列表中。例子:>>> index[4, 8]>>> data array([[ 0,  1,  2,  3],      [ 4,  5,  6,  7],      [ 8,  9, 10, 11],      [12, 13, 14, 15]])所以在这种情况下我只需要 array([[ 4,  5,  6,  7],       [8,  9, 10, 11]])因为这些行的第一个数字是 4 和 8,它们在index.基本上我正在寻找类似的东西:data[data[:,0] == i if i in index]这当然不起作用。
查看完整描述

2 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

您可以使用np.isin来检查,然后像往常一样索引:


idx = [4, 8]


data = np.array([[ 0,  1,  2,  3],

                 [ 4,  5,  6,  7],

                 [ 8,  9, 10, 11],

                 [12, 13, 14, 15]])


>>> data[np.isin(data[:,0], idx)]

array([[ 4,  5,  6,  7],

       [ 8,  9, 10, 11]])


查看完整回答
反对 回复 2021-08-05
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

如果您想使用列表isin推导式,以下是方法(不过,对于这个用例无疑更好):


>>> np.array([e for e in data if e[0] in index])

array([[ 4,  5,  6,  7],

       [ 8,  9, 10, 11]])


查看完整回答
反对 回复 2021-08-05
  • 2 回答
  • 0 关注
  • 216 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信