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的元素的列坐标

文章最后更新时间为:2018 年 10 月 15 日 09:57:45

添加新评论