zoukankan      html  css  js  c++  java
  • numpy切片索引后维度的变化

    对一个numpy数组或矩阵做切片索引,例如对一列或一行数据进行提取。如果索引值是标量,索引后的量维度减小1。如果索引是一个范围如a:b,则索引后维度不变。

    a = np.random.rand(4, 5)
    
    a
    
    Out[13]: 
    array([[0.83451584, 0.27220378, 0.84461958, 0.11096957, 0.02921137],
           [0.96256874, 0.7320878 , 0.40411651, 0.28934631, 0.22163871],
           [0.15108374, 0.39559392, 0.11857293, 0.26880925, 0.60808768],
           [0.83220628, 0.39516063, 0.67430698, 0.41871186, 0.06415003]])
    
    b = a[:, 1].shape
    
    b
    
    Out[15]: (4,)
    
    c = a[:, 1:2].shape
    
    c
    
    Out[17]: (4, 1)
    
    d = a[:, [1]].shape
    
    d
    
    Out[19]: (4, 1)
    

      

    看到a是一个二维矩阵,形状是(4, 5)。

    b对a的第二列进行索引,索引值是1,是一个标量。所以索引后b的维度降1,形状为(4,)。

    c也是对a的第二列进行索引,索引值是1:2,是一个范围,python中上界是取不到的,所以还是索引第二列。但是,此时c的维度是保持原大小仍是2维数据,形状为(4,1)。

    d也是对a的第二列进行索引,索引值是[1],是一个范围list(虽然list中仅有一个元素)。但是,此时d的维度是保持原大小仍是2维数据,形状为(4,1)。

    因此,在对numpy数组使用索引时应当注意不同情况对应的维度变化,避免后续计算维度的不匹配。

     

  • 相关阅读:
    IE表单拦截器
    使用网站作为WCF服务宿主的几种做法
    Javascript执行效率小结
    Ajax无刷新技术实现省市县三级联动下拉菜单Asp.Net
    序列化DataContractSerializer
    变化多端的列表
    腾讯微信
    Mac OS 和 iOS 操作系统架构
    程序员远离你的细节思维
    ObjectiveC概述
  • 原文地址:https://www.cnblogs.com/jiangkejie/p/14110411.html
Copyright © 2011-2022 走看看