Matlab sub2ind to python


row = [1 2 3 1];
col = [2 2 2 3];
sz = [3 3];
ind = sub2ind(sz,row,col)
Result:
ind = 1×4
4     5     6     7

我有以下来自Matlab文档的示例。我想用python中具有相同结果的代码生成相同的结果。我在其他帖子中看到了三维数组的例子如何获得numpy数组(sub2id(的线性索引但我想要一个简单的二维数组的情况,就像我展示的那样。感谢回答代码!

def sub2ind(sz, row, col):
n_rows = sz[0]
return [n_rows * (c-1) + r for r, c in zip(row, col)]

首先获取行数。那么每个索引都是times(column-1(+row。

使用

>>> row = [1, 2, 3, 1];
>>> col = [2, 2, 2, 3];
>>> sz = [3, 3];
>>> sub2ind(sz, row, col)
[4, 5, 6, 7]

如果您坚持使用基于零的索引,并考虑到Matlab数组是Fortran风格的,则可以使用此处建议的np.ravel_multi_index()

>>> row = [0, 1, 2, 0];
>>> col = [1, 1, 1, 2];
>>> sz = [3, 3];
>>> np.ravel_multi_index([row, col], sz, order='F')
[3, 4, 5, 6]

相关内容

  • 没有找到相关文章

最新更新