[英]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.