我正在尝试将一些 Matlab 代码翻译成 Python(使用 NumPy)。我对 Matlab 不是很熟悉,我遇到了我无法解析的一行:
w(idx(1:p, 1), 1) = v(idx(1:p, 1), 1) - theta;
我猜测 x
的 p
长头部被用作索引来选择 的
,p
条目>ww
中的条目将被 v
中的相应条目替换(减去标量 theta
)。
在 Octave 中乱搞,这似乎是对它正在做的事情的准确描述,但我找不到任何相关的文档。
无论如何,用 Python 重写这段代码的最佳方法是什么?我查看了 NumPy 的“暂定教程”,试图找到一种优雅的方法,它看起来像 this。可能是我要找的。但是,我在让它看起来不错时遇到了麻烦,尤其是对于赋值运算符。是否有更优雅或 Python 惯用的方法来执行此赋值操作?
最佳答案
这基本上是@Dan 在评论中写的内容,但说明了 python 中从零开始的索引:
w[idx[:p, 0], 0] = v[idx[:p, 0], 0] - theta
不确定您是否想要比这更优雅的东西。如果只应修改第一列,则需要这些零。
关于python - 将Matlab的向量赋值翻译成Python形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16398457/