繁体   English   中英

在python中替换matlab查找函数

[英]Replacement of matlab find function in python

我试图找到合适的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的索引从0开始,就像在C中一样,而matlab的索引从1开始。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM