我在MATLAB中有一段代码,我尝试将该代码转换为Python.在MATLAB中,我可以这样写:
x = [1,2,3;4,5,6;7,8,9];
Run Code Online (Sandbox Code Playgroud)
这只是一个3*3矩阵.然后,如果我使用x(1:5),MATLAB将首先将矩阵x转换为1*9向量,然后返回一个1*5向量,如下所示:ans=[1,4,7,2,5];
那么请你告诉我python中的那段简单代码可以有相同的结果吗?
Sue*_*ver 10
您可以将矩阵转换为numpy数组,然后使用unravel_index将线性索引转换为下标,然后可以使用这些下标索引到原始矩阵中.请注意,下面的所有命令都使用'F'输入来使用列主要排序(MATLAB的默认排序)而不是行主要排序(默认为numpy)
import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
inds = np.arange(5);
result = a[np.unravel_index(inds, a.shape, 'F')]
# array([1, 4, 7, 2, 5])
Run Code Online (Sandbox Code Playgroud)
另外,如果你想要像MATLAB一样压缩矩阵,你也可以这样做:
a.flatten('F')
# array([1, 4, 7, 2, 5, 8, 3, 6, 9])
Run Code Online (Sandbox Code Playgroud)
如果要将一堆MATLAB代码转换为python,强烈建议使用numpy并查看有关显着差异的文档