Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

transpose

Transpose a matrix (or a stack of matrices).

Usage

var transpose = require( '@stdlib/ndarray/base/transpose' );

transpose( x, writable )

Transposes a matrix (or a stack of matrices) x.

var getData = require( '@stdlib/ndarray/data-buffer' );
var array = require( '@stdlib/ndarray/array' );

var x = array( [ [ 1, 2, 3 ], [ 4, 5, 6 ] ] );
// returns <ndarray>[ [ 1, 2, 3 ], [ 4, 5, 6 ] ]

var y = transpose( x, false );
// returns <ndarray>[ [ 1, 4 ], [ 2, 5 ], [ 3, 6 ] ]

var bool = ( getData( x ) === getData( y ) );
// returns true

The function accepts the following arguments:

  • x: input ndarray.
  • writable: boolean indicating whether a returned ndarray should be writable.

Notes

  • The returned ndarray is a view of the input ndarray. Accordingly, writing to the original ndarray will mutate the returned ndarray and vice versa.
  • If provided an ndarray with fewer than two dimensions, the function raises an exception.
  • The writable parameter only applies to ndarray constructors supporting read-only instances.

Examples

var Float64Array = require( '@stdlib/array/float64' );
var ndarray = require( '@stdlib/ndarray/ctor' );
var rpad = require( '@stdlib/string/right-pad' );
var transpose = require( '@stdlib/ndarray/base/transpose' );

function print( arr, name ) {
    var str;
    var sh;
    var p;
    var i;
    var j;
    var k;

    sh = arr.shape;
    for ( i = 0; i < sh[0]; i++ ) {
        str = name+'['+i+',:,:] = [ ';
        p = str.length + 1;
        for ( j = 0; j < sh[1]; j++ ) {
            if ( j > 0 ) {
                str += rpad( '\n', p, ' ' );
            }
            for ( k = 0; k < sh[2]; k++ ) {
                str += arr.get( i, j, k );
                if ( k < sh[2]-1 ) {
                    str += ', ';
                }
            }
        }
        console.log( str + ' ]\n' );
    }
}

// Create a data buffer:
var buf = new Float64Array( [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 ] );

// Create a stack of matrices:
var x = new ndarray( 'float64', buf, [ 2, 2, 3 ], [ 0, 3, 1 ], 0, 'row-major' );

// Transpose the stack of matrices:
var y = transpose( x, false );

// Print the stacks:
console.log( '' );
print( x, 'X' );
console.log( '' );
print( y, 'Y' );

See Also