NumPy基本切片和索引的具体使用方法

  

索引和切片是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是一个片对象(由括号内的开始:站:一步符号构造),整数或切片对象和整数的元组时,会发生基本切片。也包括省略号(三个点)和newaxis对象。

  

从版本1.15.0开始不推荐使用:为了保持向后兼容数字中的常见用法,如果选择对象是包含片对象,省略号,或newaxis对象的任何非nararray和非元组序列(例如列表),则也会启动基本切片,但不适用于整数数组或其他嵌入序列。

  

使用N个整数进行索引的最简单情况返回表示相应项的数组标量。正如在Python中,所有下标是从零开始:对我个索引你,取值范围为
  

  
  

0≤ni   

     

其中d_i是我的阵列的形状的个元素。负指数被解释为从数组的末尾开始计数(即,如果n_i & lt; 0,则意味着n_i + d1)。

  

基本切片生成的所有数组始终是原始数组的视图。

  

序列切片的标准规则适用于基于每维的基本切片(包括使用步骤索引)。要记住的一些有用的概念包括:

  

基本切片语法是我:j: k其中我是起始索引,j是停止索引,并且& # 311;是步骤
  

  
  

k≠0
  

     

这将选择米元件(在对应的尺寸)与索引值我,我,我+ k,……(1 + (m - 1) k,其中
  

  
  

m=q + (r neq0)
  

     

和q和r是通过j-i除k所获得的商和余数:
  

  
  

强生# 8722;i=qk + r
  

     

,因此
  

  
  

i +(猴# 8722;1)k   

     例

        在在在   在在在x=np。数组([0,1,2,3,4,5,6,7,8,9))   在在在x [1:7:2]   阵列((1、3、5))   之前      

负i和j被解释为我和n + n + j,其中n是相应维度中的元素数量。负k使得踩踏指向更小的指数。

  例

        在在在   在在在x [2:10]   阵列((8、9))   在在在x(三3:1)   阵列([7、6、5、4])   之前      

假设n是要切片的维度中的元素数,然后,如果我没有给出其默认值为0 K>0和N - 1为& # 311;& lt; 0。如果没有给出j,则对于k>0,默认为n;对于k & lt; 0,默认为n - 1。如果没有给出k,则默认为1。注意,与此相同,表示沿此轴选择所有索引。:::

  例

        在在在   在在在x [5:]   数组([5 6 7 8 9))   之前      

如果选择元组中的对象数小于N,则:假定任何后续维。

  例

        在在在   在在在x=np。阵列([[[1]、[2]、[3]],[[4],[5],[6]]])   在在在x.shape   (2、3、1)   在在在x [1:2]   阵列([[[4],[5],[6]]])   之前      

省略号扩展为:制作与长度相同的选择元组所需的对象数x.ndim。可能只存在一个省略号。

  例

        在在在   在在在x (…, 0)   数组([[1,2,3],   (4、5、6)])   之前      

newaxis选择元组中的每个对象用于将所得选择的维度扩展一个单位长度维度。添加的维度是newaxis对象在选择元组中的位置。

  例

        在在在   在在在np.newaxis, x [::,:] .shape   (2,1,3,1)      

整数我返回相同的值,我+ 1除了返回的对象的维度减少1。特别是,具有第p个元素的整数(和所有其他条目:)的选择元组返回具有维度的相应子数组N - 1。如果N=1,则返回的对象是数组标量.Scalars中解释了这些对象。

  

如果选择元组具有:除作为切片对象的第p个条目之外的所有条目我:j, k,则返回的数组具有通过连接由元素,我+ k,……,我+的整数索引返回的子数组形成的维N。m - 1) k & lt; j,

NumPy基本切片和索引的具体使用方法