【问题标题】:Replacement of matlab find function in pythonpython中matlab查找函数的替换
【发布时间】:2014-04-07 17:54:52
【问题描述】:

我正在尝试在我的脚本中找到合适的 python 函数来替换 matlab find,并且通过一些谷歌搜索,我看到 np.where() 在大多数情况下都能解决这个问题。但在双重条件下,我有不同的输出。有人可以告诉我这种方法有什么问题以及如何继续吗?示例代码和区别如下。

如果是matlab:

b = [1, 2, 3; 1, 2, 3; 1, 2, 3]
[I, J] = find(( b > 1) & (b <= 3))

给出输出

I =                 J = 
     1                 2
     2                 2
     3                 2
     1                 3
     2                 3
     3                 3

如果是python:

b= array([[1, 2, 3],
       [1, 2, 3],
       [1, 2, 3]])

>>> np.where((b > 1) & (b <= 3))
(array([0, 0, 1, 1, 2, 2]), array([1, 2, 1, 2, 1, 2]))

【问题讨论】:

    标签: python matlab python-2.7 numpy


    【解决方案1】:

    这两种方法确实提供了相同的答案,尽管顺序和索引条件不同。

    数组的 Python 索引从 0 开始,就像在 C 中一样,而 matlab 的索引从 1 开始。

    此外,两个输出(通过 matlab 和 numpy)确实彼此对应项的排列。这可能是由于不同的索引实现。

    您可以看到 matlab 按列遍历矩阵,而 numpy 按行遍历。

    【讨论】:

    • 谢谢。如果我转置矩阵以在 Python 中执行操作,我会得到与 Matlab 相同的答案。只是它现在返回 J 作为 I,返回 I 作为 J,但这没关系。
    猜你喜欢
    • 1970-01-01
    • 2012-11-25
    • 2018-04-17
    • 2013-07-05
    • 2020-06-16
    • 1970-01-01
    • 2012-10-25
    • 2014-07-05
    • 1970-01-01
    相关资源
    最近更新 更多