Matlab转python的索引问题
python 中numpy库可以实现类似matlab多维数组的运算.但两者在索引方式上存在一些差异.这是需要注意的.例如:
% 定义一个4*4矩阵 A=1:16; A=reshape(A,[4,4]); % 提取2*2的子矩阵 a=A([1,4],[1,4]) % 得到一个2*2矩阵: % [ A(1,1) A(1,4); % A(4,1) A(4,4) ]
但是python中则不能这样得到子矩阵:
import numpy as np A = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]) # 获取与MATLAB相同的2x2矩阵 a = A[[0,3],[0,3]] print(a) # 输出结果:[2,7]
在MATLAB中,使用A([0, 1], [1, 2])
得到的是一个2x2矩阵,而在Python中使用NumPy进行类似的索引操作时,结果会有所不同.
在MATLAB中,这个索引操作实际上返回的是矩阵A
中第1行和第2行的第2列和第3列元素组成的矩阵,即:
[ A(1,2) A(1,3); A(2,2) A(2,3) ]
这将得到一个2x2的矩阵.
在Python中使用NumPy库,要得到与MATLAB相同的结果,您需要使用如下的索引方式:
import numpy as np A = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]) # 获取与MATLAB相同的2x2矩阵 a = A[np.ix_([0, 1], [1, 2])] print(a)
这里np.ix_
函数用于创建一个索引数组,它允许我们按照MATLAB的索引方式来选择矩阵的子集.这段代码将得到与MATLAB相同的2x2矩阵结果:
[[ 2 3] [ 6 7]]
本文来自博客园,作者:FE-有限元鹰,转载请注明原文链接:https://www.cnblogs.com/aksoam/p/18159486
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2023-04-26 【ABAQUS&Composite】composite layerup Manager从txt导入铺层信息