Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I get the two last dimensions of an N-D array as a 2D array?

I have a 3D array in MATLAB, with size(myArray) = [100 100 50]. Now, I'd like to get a specific layer, specified by an index in the first dimension, in the form of a 2D matrix. I tried myMatrix = myArray(myIndex,:,:);, but that gives me a 3D array with size(myMatrix) = [1 100 50].

How do I tell MATLAB that I'm not interested in the first dimension (since there's only one layer), so it can simplify the matrix?

Note: I will need to do this with the second index also, rendering size(myMatrix) = [100 1 50] instead of the desired [100 50]. A solution should be applicable to both cases, and preferably to the third dimension as well.

like image 603
Tomas Aschan Avatar asked Apr 19 '11 17:04

Tomas Aschan


People also ask

How do I turn an array into a 2D array?

Use reshape() Function to Transform 1d Array to 2d Array The number of components within every dimension defines the form of the array. We may add or delete parameters or adjust the number of items within every dimension by using reshaping.

How do you find the dimensions of a 2D list?

You can get the total number of items in the 2D list by multiplying the number of rows by the number of columns. If the nested lists may be of different sizes, use the sum() function.

What is two-dimensional 2D array?

A two-dimensional array is a data structure that contains a collection of cells laid out in a two-dimensional grid, similar to a table with rows and columns although the values are still stored linearly in memory.

How do you access a 2D numpy array?

Indexing a Two-dimensional Array To access elements in this array, use two indices. One for the row and the other for the column. Note that both the column and the row indices start with 0. So if I need to access the value '10,' use the index '3' for the row and index '1' for the column.


2 Answers

reshape(myArray(myIndex,:,:),[100,50])
like image 34
fdermishin Avatar answered Sep 24 '22 02:09

fdermishin


Use the squeeze function, which removes singleton dimensions.

Example:

A=randn(4,50,100);
B=squeeze(A(1,:,:));
size(B)

ans =

    50   100

This is generalized and you needn't worry about which dimension you're indexing along. All singleton dimensions are squeezed out.

like image 79
abcd Avatar answered Sep 24 '22 02:09

abcd