MATLAB与numpy矩阵中元素位运算的实现区别

缘由:在将MATLAB代码转换成Python代码时所遇到的问题。

存在m*n二值矩阵(逻辑矩阵,元素由0和1组成mat1,mat2,mat3,mat4,求多个矩阵中同时大于0的位置下标(MATLAB中矩阵的下标以列为主序,即从第一列的第一行到最后一行依次编号,接着第二列,。。。)

MATLAB代码为:

index = find(mat1 & mat2 & mat3 & mat4);

Python代码为:

import  numpy as np
temp = np.logical_and(np.logical_and(np.logical_and(mat1, mat2), mat3),mat4).flatten(1) 
#flatten(1)表示结果以列为主序进行扁平化
index = np.nonzero(temp)[1] #因为已经扁平化成一行了,所以此处去不为0的元素的列坐标


该文章于2017年5月12日于CSDN上首次发表,2017年12月22日搬家至此!

    原文作者:高正杰
    原文地址: https://www.jianshu.com/p/fe45c1d18d89
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞