python - 从 numpy 矩阵获取项目,索引位于数组中

标签 python matlab numpy matrix

我正在尝试将 matlab 代码转换为 python,我遇到了如下代码:

a=[1 2 3;4 5 6;7 8 9]
b=[1, 4, 8]
a(b)
//output :
ans :
1   4   8

这实际上是从 b 获取索引并执行

a.item(x) #python

我想问的是,有什么方法可以在 python 中做到这一点吗? 谢谢。 :)

最佳答案

注意:在撰写此答案时,问题中给出的示例是错误的。 a(b) 将导致:

ans =
   1   2   6

提供的 MATLAB 代码使用 linear indexing ,它使用列优先顺序,而所述的 a.item(x) Python 函数使用行优先顺序。

ind2sub MATLAB 函数可以将线性索引转换为数组索引。类似的 numpy 函数是 unravel_index .

让我们看一下下面的示例代码。注意:Python 使用从 0 开始的索引,而 MATLAB 使用从 1 开始的索引。

import numpy as np

a = np.array([[10, 20, 30], [40, 50, 60], [70, 80, 90]])
b = np.array([0, 3, 7])

c = a[np.unravel_index(b, a.shape, 'F')]

print(a)
print(b)
print(c)

[[10 20 30]
 [40 50 60]
 [70 80 90]]

[0 3 7]

[10 20 60]

关于python - 从 numpy 矩阵获取项目,索引位于数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56251397/

相关文章:

运行 Spark 时 python 脚本卡在输入法上

python - 从列表中删除嵌套(2个元素的列表)的简单方法?

Matlab:如何删除包含向量中存储的任何数字的行?

python - 自动化上述功能,这样我就不必每次都编写额外的术语

python - 将字符串拆分为多个列表

python - uWSGI 主进程在 Heroku 上有用吗?

arrays - 3d 矩阵中 `repmat` 和 `permute` 的更快替代方案?

excel - MATLAB 2012 - 从 matlab 创建单个列表文本文件

python - 如何使用numpy从2D图像矩阵生成所有(x,y,像素值)元组的列表?

Python - 选择模式时随机打破平局