索引和切片是NumPy中最重要最常用的操作。熟练使用NumPy切片操作是数据处理和机器学习的前提,所以一定要掌握好。
文档:https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html
索引
ndarrays可以使用标准Python x[obj]语法对其进行索引 ,其中x是数组,obj是选择方式。有三种可用的索引:字段访问,基本切片,高级索引。究竟是哪一个取决于obj。
注意
在Python中,x[(exp1, exp2, ..., expN)]相当于 x[exp1, exp2, ..., expN]; 后者只是前者的语法糖。
基本切片和索引
基本切片将 Python 的切片基本概念扩展到 N 维。当obj是一个slice对象(由括号内的start:stop:step符号构造)、整数或切片对象和整数的元组时,会发生基本切片。也包括省略号(三个点)和newaxis对象。
从版本1.15.0开始不推荐使用:为了保持向后兼容Numeric中的常见用法,如果选择对象是包含 slice 对象、省略号,或 newaxis 对象的任何非 nararray 和非元组序列(例如 list),则也会启动基本切片,但不适用于整数数组或其他嵌入序列。
使用 N 个整数进行索引的最简单情况返回表示相应项的数组标量。正如在 Python 中,所有下标是从零开始:对我个索引你,取值范围为
0≤ni
其中d_i是 我的阵列的形状的个元素。负指数被解释为从数组的末尾开始计数(即,如果 n_i <0,则意味着n_i + d_i)。
基本切片生成的所有数组始终 是原始数组的视图。
序列切片的标准规则适用于基于每维的基本切片(包括使用步骤索引)。要记住的一些有用的概念包括:
基本切片语法是i:j:k其中我是起始索引, j是停止索引,并且ķ是步骤
k≠0
这将选择米元件(在对应的尺寸)与索引值我,i,i+k,...,1 +(m - 1)k, 其中
m=q+(r neq0)
和 q 和 r 是通过j-i 除 k 所获得的商和余数:
j−i=qk+r
,因此
i+(m−1)k
例
>>> >>> x = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> x[1:7:2] array([1, 3, 5])
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。