如何掌握Numpy中ravel_multi_index函数的使用,有哪些要注意
Admin 2022-06-17 群英技术资讯 813 次浏览
今天就跟大家聊聊有关“如何掌握Numpy中ravel_multi_index函数的使用,有哪些要注意”的内容,可能很多人都不太了解,为了让大家认识和更进一步的了解,小编给大家总结了以下内容,希望这篇“如何掌握Numpy中ravel_multi_index函数的使用,有哪些要注意”文章能对大家有帮助。最近遇到了ravel_multi_index这个函数,官方文档看不明白,Google了一番好不容易才从一堆示例代码里理解函数的意义,记录一下。
官方文档在这
这个函数主要功能为把给定的一个多维数组(函数的第一个参数)看作索引数组,索引什么呢?去索引一个形状为dims(函数的第二个参数),值为依次增大的自然数的数组中的值(可看做由list(range(N))的数组reshape(dims)而来),意义即为用一个唯一的一维数来定位(保存)原数组的二维(或多维(i,j,k,…))的数对的信息。
>>> arr = np.array([[3,6,6],[4,5,1]])
>>> np.ravel_multi_index(arr, (7,6))
array([22, 41, 37])
>>> np.ravel_multi_index(arr, (7,6), order='F')
array([31, 41, 13])
>>> np.ravel_multi_index(arr, (4,6), mode='clip')
array([22, 23, 19])
>>> np.ravel_multi_index(arr, (4,4), mode=('clip','wrap'))
array([12, 13, 13])
>>> np.ravel_multi_index((3,1,4,1), (6,7,8,9))
1621
示例中arr即为要转换的多维数组,把arr的内容当作索引,即[3,6,6]为横坐标,[4,5,1]为纵坐标,去索引形状为(7,6),内容为从0开始,从左往右,从上往下依次增大的自然数的数组中的值。
例如第一个要索引的数[3,4]即为(7,6)数组中第4行,第5列的的值,即为3*6+4=22,即为结果中的第一个数。依次类推。
了解函数功能后,其他参数具体可见官方文档说明。
补充:numpy.unravel_index 与 numpy.ravel_multi_index的理解
遇到numpy.ravel_multi_index 与numpy.unravel_index 这两个函数,查了网上的很多资料 都没讲的很清楚,记录一下。
numpy.unravel_index(indices, shape, order='C')
其中indices是表示一个一维数组的index,将这个一维数组转换成大小为shape([col, row])shape矩阵决定了转变后得到的数组的行和列的大小,进而得到index在新的二维矩阵 中的行index 和列index 其中order决定先是行index,还是先是列index 'C'先是列index 再是行index ‘F'先是行index 再是列index
np.unravel_index([22, 41, 37], (7,6)) (array([3, 6, 6]), array([4, 5, 1]))
numpy.ravel_multi_index是numpy.unravel_index反过来的过程,
numpy.ravel_multi_index(multi_index, dims, mode='raise', order='C')
根据multi_index中不同数组代表的具体的索引,以及该数组的dims的大小 ,得到将该数组flat成一维数组 数据在一位数组中的位置。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
首先需要明确的一点是GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念,下面这篇文章主要给大家介绍了关于对Python中GIL的一点理解,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
Python中的 for 语句可用来迭代任何序列中的项目,如列表或字符串。
这篇文章给大家分享的是python中sys模块的使用,对大家学习和理解python有一定的帮助,因此分享给大家做个参考,文中sys模块的使用示例介绍的非常详细,感兴趣的朋友接下来一起跟随小编看看吧。
这篇文章主要介绍了Python之Numpy 常用函数总结,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
假如有这样一个问题给你一个整数数组 coins ,表示不同面额的硬币以及一个整数 amount ,表示总金额,计算并返回可以凑成总金额所需的最少的硬币个数,接下来通过示例代码给大家介绍Python零钱兑换问题,感兴趣的朋友一起看看吧
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008