python的ind_MATLAB中的ind2sub相当于Python
谷歌搜索引导我到这个链接:
https://github.com/jjakeman/pyheat/blob/master/utilities/math_utils.py
据我所知,在MATLAB中没有直接实现这些功能.
事实证明我无法正确阅读文档.如果你想要sub2ind的功能,你需要ravel_multi_index功能.函数声明表明您需要两个输入.第一个输入是2D numpy数组,其中每一行是特定维度的位置.例如,如果要在2D矩阵上应用ind2sub,则应指定2D numpy数组,其中第一行包含所需的所有行位置,第二行包含所需的所有列位置.第二个输入是确定每个维度大小的元组,因此对于2D数组,它是行数和列数.
要做ind2sub,你需要unravel_index功能.第一个输入是一个线性索引数组,您希望将其转换为数组中每个维度的位置.第二个输入是像以前一样的维度元组.
如果你想尝试自己实现这些,我将把底部的帖子留给后人.
但是,您当然可以自己实现这些.我假设是因为你用numpy标记你的帖子,你会想要一个numpy-esque解决方案.请记住,在numpy中,您访问行major,而不是column major中的元素,因此给定两个数组,一个用于行,另一个用于列索引(0-indexed),2D矩阵的sub2ind非常简单:
def sub2ind(array_shape, rows, cols):
return rows*array_shape[1] + cols
array_shape是一个包含两个元素的数组,其中第一个元素是矩阵中的行数,第二个元素是列数.如果您还记得,您可以通过以下方式访问行主矩阵中的元素:
ind = r*cols + c
(r,c)是你想要的行和列索引,只要它是0索引的.换句话说,你会使用整数除法和模数:
def ind2sub(array_shape, ind):
rows = (ind.astype('int') / array_shape[1])
cols = (ind.astype('int') % array_shape[1]) # or numpy.mod(ind.astype('int'), array_shape[1])
return (rows, cols)
这里,输出是一个双元素元组,其中第一个元素是行位置,第二个元素是列位置.要总结ind2sub,要访问所需的行,可以使用线性索引并对列进行整数除法.要获得所需的列,可以找到模数或余数.进入3个维度以及之后会有点复杂.我将让您看看上面提到的链接以获取更多详细信息.
显然,我没有在上面的函数中进行任何错误检查,因此在这种情况下你显然会使用array_shape.做你想做的更好的方法是:
def sub2ind(array_shape, rows, cols):
ind = rows*array_shape[1] + cols
ind[ind < 0] = -1
ind[ind >= array_shape[0]*array_shape[1]] = -1
return ind
def ind2sub(array_shape, ind):
ind[ind < 0] = -1
ind[ind >= array_shape[0]*array_shape[1]] = -1
rows = (ind.astype('int') / array_shape[1])
cols = ind % array_shape[1]
return (rows, cols)
我做了一些基本的错误检查,以确保ind2sub的sub2ind或线性索引没有行或列超出范围.我将这些位置设置为-1,这样你就知道你搞砸了某个地方.
祝好运!
python的ind_MATLAB中的ind2sub相当于Python相关推荐
- python 替换array中的值_利用Python提取视频中的字幕(文字识别)
我的CSDN博客id:qq_39783601,昵称是糖潮丽子~辣丽 从今天开始我会陆续将数据分析师相关的知识点分享在这里,包括Python.机器学习.数据库等等. 今天来分享一个Python小项目! ...
- python删除字符串中重复字符_从Python中删除字符串标点符号的最佳方法
似乎有一个比以下更简单的方法: 1 2 3import string s ="string. With. Punctuation?" # Sample string out = s ...
- python统计句子中单词个数_【python统计单词数量】作文写作问答 - 归教作文网
如何用python统计一个txt文件中某个单词出现的次数 1.首先,定义一个变量,保存要统计的英文文章. 2.接着,定义两个数组,保存文章中的单词,以及各单词的词频. 3.从文章中分割出所有的单词,保 ...
- python在软件测试中的应用_探索Python在数据库测试中的应用
Python(派森)语言是一种面向对象的用途非常广泛的编程语言,具有非常清晰的语法特点,适用于多种操作系统,可以在Windows和Unix这样的系统中运行.目前在国际上非常流行,正在得到越来越多的应用 ...
- python移动文件中某个内容_如果python中的某些文件类型,则移动文件并创建目录...
这可能是一个简单的问题,但我对 python和编程一般都是新手. 我正在研究一个简单的程序,在镜像源位置的目录结构时,将.mp3文件从一个位置复制/移动到另一个位置.到目前为止我的工作,但它也在目标位 ...
- python中函数的调用_慢步python,编程中函数的概念,python中函数的声明和调用
函数,曾经是一个很高大尚的概念.笔者是在高中数学里认识的函数,先是从y=2x+3 这条代数式开始的.y是因变量,x是自变量,y因为x取值的变化而变化. 再后来式子变成这样:f(x)=2x+3,f(x) ...
- python向mysql中添加数据_通过python操控MYSQL添加数据,并将数据添加到EXCEL中-阿里云开发者社区...
第一步 在python中创建mysql数据表 import pymysql #导入模块 def getCon(): #联接到数据库,并封装循环使用,db是数据库名字 conn = pymysql.co ...
- python删除字符串中的字母_在Python中删除字符串中的大写字母
我想写一个函数消除一个字符串和2个可选参数.第一个可选参数(bad_characters)取一个字母,第三个参数(case_sensitive)取一个布尔值.该函数应该接受一个字符串s并移除bad_c ...
- python 获取json中最大值_详细解析 Python 爬取 bilibili 的视频、弹幕以及封面
本文使用 Zhihu On VSCode 创作并发布 环境 用到的 Python 库: Python 3.7 requests moviepy json re os 浏览器:Firefox/ 83.0 ...
最新文章
- SAP SD 客户信贷管理解析
- python国际象棋ai程序_用Python编写一个国际象棋AI程序
- 如何使用 MySQL 的 IDE 导出导入数据表文件(以 Navicat for MySQL 导出导入 Excel 文件为例)
- HDU-简易版之最短距离(最短路)
- linux文件共享之samba,nfs的搭建
- Atitit postgresql data type 数据类型与mysql对应表 数据库常用数据类型 	Postgre	Mysql	 整数	intgreter	Int	 小数	numeric	FL
- 从shell(终端)中退出python
- 网课答题查询助手(免费)
- 【Sass/SCSS】预加载器中的“轩辕剑”
- php 判断字数,php统计字数
- 解决Office在修改安装路径后,提示“操作系统当前配置不能运行此程序”的问题
- git clone 使用代理加速
- JavaScript 中 10 个需要掌握基础的问题
- 体验为王的时代,如何提高售后服务环节的客户参与度?
- 能帮你找到网页设计灵感的16个网站-沪江UI团队资料翻译组
- 新媒体绩效考核系数计算公式_20种新的绩效最佳做法
- 【Linux】用户配置文件(passwd shadow | group gshadow)
- 电影《2012》讲世界末日该不该禁播?
- java-php-python-ssm-手机电子商城-计算机毕业设计
- 14 MySQL-视图