I'm trying to do what the following MATLAB code does in python but I can't quite understand the output of it. This is the MATLAB code
A = zeros((48,60)); A(3,5) = 1; A(3,6) = 1; A(48,60) = 1; A(47,60) = 1; A(24,30) = 1; A(38,45) = 1; f = find(A == 1); The last line with f returns [195;243;1416;2150;2879;2880] which is a column of numbers. But I don't get how these numbers are obtained from find(). It seems like it isn't multiplying the row and column numbers. Why am I getting those numbers? Also, what should I do to get the same thing in python?
A= np.zeros(48, 60) A[2, 4] = 1 A[2, 5] = 1 A[47, 59] = 1 A[46, 59] = 1 A[23, 29] = 1 A[37, 44] = 1 np.where(A ==1) I've tried np.where(A== 1) but it only returns indices of the rows and columns.
1 Answer
The find command in matlab returns the linear indices of each element. More can be find here: .
The equivalent python code would then be np.argwhere which also returns the indices:
To get the exact same behavior as matlab, you have to transform the matrix into a vector:
A= np.zeros((48, 60)) A[2, 4] = 1 A[2, 5] = 1 A[47, 59] = 1 A[46, 59] = 1 A[23, 29] = 1 A[37, 44] = 1 np.argwhere(np.ravel(A)==1) 1