np.indices官方文档定义如下:

def indices(dimensions, dtype=int, sparse=False):"""Return an array representing the indices of a grid.Compute an array where the subarrays contain index values 0, 1, ...varying only along the corresponding axis.Parameters----------dimensions : sequence of intsThe shape of the grid.dtype : dtype, optionalData type of the result.sparse : boolean, optionalReturn a sparse representation of the grid instead of a denserepresentation. Default is False... versionadded:: 1.17Returns-------grid : one ndarray or tuple of ndarraysIf sparse is False:Returns one array of grid indices,``grid.shape = (len(dimensions),) + tuple(dimensions)``.If sparse is True:Returns a tuple of arrays, with``grid[i].shape = (1, ..., 1, dimensions[i], 1, ..., 1)`` withdimensions[i] in the ith place

官方文档中的描述较为抽象,简单来说。np.indices的作用就是返回一个给定形状数组的序号网格数组,可以用于提取数组元素或对数组进行切片使用。请看下面的例子:

实例:

import numpy as npx = np.arange(20).reshape((5,4))
dense_grid = np.indices((2,3))                  #返回一个2x3网格序列,密集分布,每个行号和列号一一对应,表示一个位置的元素。
sparse_grid  = np.indices((2,3),sparse= True)   #返回一个松散排布的2x3网格的行分布和列分布元组,行号和列号不是一一对应,一个行号对应多个列号。print("x:\n",x)
print("x.shape:",x.shape)print("================================")print("dense_grid:\n",dense_grid)
print("================================")
print("行序号:\n",dense_grid[0])
print()
print("列序号:\n ",dense_grid[1])
print("\n")
print("切片效果:\n", x[dense_grid[0],dense_grid[1]])           #等效于x[:2,:3]切片效果print("================================")
print("sparse_grid:\n",sparse_grid)
print("================================")print("切片效果: \n",x[sparse_grid])                           #等效于x[:2,:3]切片效果

运行结果:
x:
 [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]
 [16 17 18 19]]
x.shape: (5, 4)
================================
dense_grid:  #密集分布,行号和列号一一对应,例如(0,0)位置表示元素0,(1,0)位置表示元素4,以此类推。
 [[[0 0 0]
  [1 1 1]]
 [[0 1 2]
  [0 1 2]]]
================================
行序号:
 [[0 0 0]
 [1 1 1]]
列序号:
  [[0 1 2]
 [0 1 2]]
切片效果:          #利用密集网格实现了对原数组两行三列的一个子数组的截取,等效于x[:2,:3]
 [[0 1 2]
 [4 5 6]]
================================
sparse_grid:      #松散分布,元组的第一个参数表示行号,第二个参数表示列号。
 (array([[0],
       [1]]), array([[0, 1, 2]]))
================================
切片效果:          #利用松散网格实现了对原数组两行三列的一个子数组的截取,等效于x[:2,:3]
 [[0 1 2]
 [4 5 6]]

总结: np.indices((2,3),sparse= True)返回一个2x3形状的数组的序号网格,设定spare=True时返回的是一个松散分布的行分布和列分布的元组,相反spare=False时返回的是一个行号和列号一一对应序号网格,这个序号网格可以用于实现数组的切片操作。

Numpy中np.indices函数用法详解相关推荐

  1. python explode_pandas dataframe 中的explode函数用法详解

    在使用 pandas 进行数据分析的过程中,我们常常会遇到将一行数据展开成多行的需求,多么希望能有一个类似于 hive sql 中的 explode 函数. 这个函数如下: Code # !/usr/ ...

  2. C++ 中的getline()函数用法详解

    遇到了要输入一行字符串的操作,我想除了fgets()的方法(fgets()用法链接),getline()也是可以的,但是我对getline的操作不熟悉,便查阅了很多资料,发现都说的很模糊,借这个机会我 ...

  3. C++中的set函数用法详解

    1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构 ...

  4. python中mat函数_Python中flatten( )函数及函数用法详解

    flatten()函数用法 flatten是numpy.ndarray.flatten的一个函数,即返回一个一维数组. flatten只能适用于numpy对象,即array或者mat,普通的list列 ...

  5. C++中substr()函数用法详解

    C++中substr()函数用法详解 原型: string substr (size_t pos = 0, size_t len = npos) const; 返回一个新构造的string对象,其值初 ...

  6. c++ memset 语言_C++中memset函数用法详解

    本文实例讲述了C++中memset函数用法.分享给大家供大家参考,具体如下: 功 能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,块的大小由第三个参数指定,这个函数通常 ...

  7. python中如何反解函数_PyTorch中反卷积的用法详解

    pytorch中的 2D 卷积层 和 2D 反卷积层 函数分别如下: class torch.nn.Conv2d(in_channels, out_channels, kernel_size, str ...

  8. python中import re_Python3中正则模块re.compile、re.match及re.search函数用法详解

    本文实例讲述了Python3中正则模块re.compile.re.match及re.search函数用法.分享给大家供大家参考,具体如下: re模块 re.compile.re.match. re.s ...

  9. python中isinstance怎么用_pythonisinstance函数用法详解

    这篇文章主要介绍了python isinstance函数用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 isinstance() 函数来判断 ...

最新文章

  1. Eclipse安装SVN教程
  2. #与##在宏定义中的--宏展开
  3. 删除有序数组中的重复项(数组去重)
  4. 树形dp-CF-337D. Book of Evil
  5. angular.js入门基础(一)
  6. 前端web 技术盘点
  7. pycharm导入opencv库失败解决方法
  8. ENVI入门系列教程---一、数据预处理---5. 图像自动配准
  9. java集成Cplex:Cplex下载、IDEA环境搭建、docker部署
  10. webstorm汉化之后出现乱码现象
  11. C#生成Code39条形码而非条形码字体的方法
  12. python查火车票_Python查询火车票(三)
  13. 【论文笔记】Poison Frogs! Targeted Clean-Label Poisoning Attacks on Neural Networks
  14. android 仿微信选取相册_Android--选择图片(仿微信发朋友圈)第一篇
  15. linux中的 inode 详解
  16. (附源码)ssm+mysql+基于ssm技术的校自助阅览室的设计与实现 毕业设计242326
  17. 【射频知识】PCB材料/层叠/信号注入设计与传输线实现形式的性能比对
  18. 2019-mathorcupB题-环形穿梭机调度模型(思路篇)
  19. 谷歌浏览器开通flash的访问权限的方式
  20. 基于HTML环保主题网页项目的设计与实现——环保垃圾分类(HTML+CSS+JavaScript)

热门文章

  1. 目录测试法案例1-认识的错觉
  2. java 对图片文件进行加密
  3. 2022年二级建造师考试建设工程法规及相关知识练习题及答案
  4. Loki的原理及使用
  5. 解决USB无线网卡在Ubuntu系统中的适配问题:Ubuntu系统安装无线网卡驱动
  6. js计算两个时间相差的天数
  7. 人生大事聚焦到这5200个空格里是一种什么体验?
  8. 【C++】引用变量--1.如何创建引用变量
  9. 北京供销社java笔试题_梅锦县供销社办公室王秘书,接待了一位姓张的来访者,据反映,三年前他与乡供销社签订了承包一供销...
  10. Java网络编程之UDP和TCP套接字