当前位置:  开发笔记 > 编程语言 > 正文

在numpy中索引多个非相邻范围

如何解决《在numpy中索引多个非相邻范围》经验,为你挑选了1个好方法。

我想从1d numpy数组(或向量)中选择多个非相邻范围.

假设:

>>> idx = np.random.randint(100, size=10)
array([82,  9, 11, 94, 31, 87, 43, 77, 49, 50])

这当然有效:

>>> idx[0:3]
array([82,  9, 11])

这可以通过单个索引获取:

>>> idx[[0,3,4]]
array([82, 94, 31])

但是,如果我想要的选择范围0:3,以及7:

我试过了:

>>> idx[[0:3,7:]]
SyntaxError: invalid syntax

有没有一种简单的方法可以做到这一点,还是我需要单独生成它们并连接?



1> hpaulj..:

您需要在索引之前或之后连接. np.r_让事情变得简单

In [116]: idx=np.array([82,  9, 11, 94, 31, 87, 43, 77, 49, 50])
In [117]: np.r_[0:3,7:10]
Out[117]: array([0, 1, 2, 7, 8, 9])
In [118]: idx[np.r_[0:3,7:10]]
Out[118]: array([82,  9, 11, 77, 49, 50])

np.r_ 扩展切片并连接它们.

您可以混合切片和列表:

In [120]: np.r_[0:3,7:10,[0,3,4]]
Out[120]: array([0, 1, 2, 7, 8, 9, 0, 3, 4])

在索引之前连接可能比之后更快,但对于像这样的1d数组,我认为差异不大.

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有