Problem
Sie haben Daten in einer Matrix und benötigen eine Datentabelle oder umgekehrt
Data table or matrix?Data table or matrix?Datentabelle oder Matrix?
Lösung
Es gibt eine Funktion, AsTable(), die aus einer Matrix eine neue Datentabelle erstellt, und eine Datentabellenmethode, GetAsMatrix(), die aus den numerischen Spalten einer Tabelle eine Matrix erstellt.
Es gibt auch eine Möglichkeit, Datentabellen direkt mit zu indizieren Abonnieren der Datentabelle .
// make a matrix of 5 rows, 3 cols, random values
mat = J( 5, 3, Random Normal() );
// make a data table from a matrix
dt = As Table( mat );
// make a matrix from a data table
mat2 = dt << GetAsMatrix;
// comparing two matrices returns a matrix of answers
// and the All function returns true if all of the
// matrix values are true
Show( All( mat == mat2 ) );
// use data table subscripting to get a matrix of all
// rows and all columns from the table; the zero subscript
// is used with matrix and data table to mean "all
// rows or all columns"
mat3 = dt[0, 0];
Show( All( mat == mat3 ) );
Danke!
Abonnieren der Datentabelle beschreibt die Indizierung einer Datentabelle als Matrix und Was ist die JSL-Matrix? zeigt, wie man die Matrixsubskription verwendet. Mit einer Datentabelle (oder einer Matrix) können Sie also, anstatt die Daten aus der Tabelle zu kopieren, um eine Matrix zu erstellen, wie folgt eine Zeile von beiden erhalten:
// if dt is a table...
rowVector = dt[ rowNumber, 0 ]; // all columns
rowVector = dt[ rowNumber, { age, height, weight } ]; // selected columns
// if m is a matrix
rowVector = m[ row, 0 ];
rowVector = m[ row, 5::9 ]; // selected items from row
// and both dimensions at once
patch = m[ 3::5, 7::11 ];Der Index Null bedeutet „die gesamte Dimension“. Die Matrixindizierung beginnt bei eins.
Danke, sehr nützlich und gibt es eine praktische Möglichkeit, einen Zeilenvektor aus einer Datentabelle abzurufen?
Danke!