Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Indexar y ver elementos de matriz altos

Los arrays altos son demasiado grandes para caber en la memoria, por lo que es común ver subconjuntos de los datos en lugar de toda la matriz. Esta página muestra técnicas para extraer y ver partes de una matriz alta.

Extraer filas superiores de matriz

Utilice la función para extraer las primeras filas de una matriz alta. no obliga a la evaluación de la matriz, por lo que debe usar para ver el resultado.headheadgather

tt = tall(table(randn(1000,1),randn(1000,1),randn(1000,1)))
tt =    1,000×3 tall table        Var1        Var2        Var3       ________    ________    ________       0.53767      0.6737     0.29617       1.8339    -0.66911      1.2008      -2.2588    -0.40032      1.0902      0.86217     -0.6718     -0.3587      0.31877     0.57563    -0.12993      -1.3077    -0.77809     0.73374     -0.43359     -1.0636     0.12033      0.34262     0.55298      1.1363        :           :           :        :           :           :
t_head = gather(head(tt))
t_head =    8×3 table        Var1        Var2        Var3       ________    ________    ________       0.53767      0.6737     0.29617       1.8339    -0.66911      1.2008      -2.2588    -0.40032      1.0902      0.86217     -0.6718     -0.3587      0.31877     0.57563    -0.12993      -1.3077    -0.77809     0.73374     -0.43359     -1.0636     0.12033      0.34262     0.55298      1.1363

Extraer filas inferiores de array

Del mismo modo, puede utilizar la función para extraer las filas inferiores en una matriz alta.tail

t_tail = gather(tail(tt))
t_tail =    8×3 table        Var1        Var2        Var3       ________    ________    ________       0.64776     0.47349    -0.27077     -0.31763      1.3656     0.43966        1.769     -1.6378    -0.50614       1.5106      2.0237    -0.18435      0.16401     0.77779       0.402     -0.28276     -0.5489     0.53923       1.1522    -0.12601    -0.73359      -1.1465     0.29958    -0.26837

Indexación de Tall arrays

Todos los arrays altos soportan la indexación de paréntesis. Al indexar una matriz alta mediante paréntesis, como o, el resultado es una nueva matriz de tamaño alto que solo contiene las filas y columnas especificadas (o las variables).T(A)T(A,B) Como la mayoría de las otras operaciones en matrices altas, las expresiones de indexación no se evalúan inmediatamente. Debe usar para evaluar la operación de indexación.gather Para obtener más información, consulte.Evaluación diferida de matrices altas

Puede realizar estos tipos de indexación en la primera dimensión de una matriz alta:

  • , donde selecciona todas las filas.B = A(:,…):A

  • , donde hay un vector de columna numérico alto o un vector numérico no alto.B = A(idx,…)idx

  • , donde es una matriz lógica alta o no alta de la misma altura que.B = A(L,…)LA Por ejemplo, puede utilizar operadores relacionales, como.tt(tt.Var1 < 10,:)

  • o, donde y son expresiones de indexación válidas.B = A(P:D:Q,…)B = A(P:Q,…)P:D:QP:Qcolon

    • proporciona un acceso directo para.head(tt,k)tt(1:k,:)

    • proporciona un acceso directo para.tail(tt,k)tt(end-k:end,:)

Además, el número de subsubscriptos que debe especificar depende de cuántas dimensiones tenga la matriz:

  • Para los vectores de columna altos, puede especificar un único subíndice como.t(1:10)

  • Para los vectores de fila alta, las tablas altas y los horarios altos, debe especificar dos subgrupos.

  • Para matrices altas con dos o más dimensiones, debe especificar dos o más subsubtotales. Por ejemplo, si la matriz tiene tres dimensiones, puede usar una expresión como o, pero no expresiones de indexación lineales como o.tA(1:10,:,:)tA(1:10,:)tA(1:10)tA(:)

Sugerencia

La función localiza elementos distintos de cero en vectores de columna de alta, y puede ser útil para generar un vector de índices para los elementos que cumplen condiciones particulares.find Por ejemplo, devuelve los índices lineales de todos los elementos negativos.k = find(X<0)X

Por ejemplo, utilice la indexación de paréntesis para recuperar las primeras diez filas de.tt

tt(1:10,:)
ans =    10×3 tall table        Var1        Var2        Var3       ________    ________    ________       0.53767      0.6737     0.29617       1.8339    -0.66911      1.2008      -2.2588    -0.40032      1.0902      0.86217     -0.6718     -0.3587      0.31877     0.57563    -0.12993      -1.3077    -0.77809     0.73374     -0.43359     -1.0636     0.12033      0.34262     0.55298      1.1363        :           :           :        :           :           :

Recupere los últimos 5 valores de la variable de tabla.Var1

tt(end-5:end,'Var1')
ans =    6×1 tall table        Var1       ________         1.769       1.5106      0.16401     -0.28276       1.1522      -1.1465

Recupere cada fila número 100 de la tabla alta.

tt(1:100:end,:)
ans =    10×3 tall table        Var1         Var2         Var3       _________    _________    ________        0.53767       0.6737     0.29617       0.84038    -0.041663    -0.52093       0.18323       1.3419    0.052993      0.079934     -0.40492     -1.6163       0.26965      -1.5144     0.98399     -0.079893      -1.6848    -0.91182       0.47586      -2.1746      1.1754        1.9085     -0.79383     0.18343         :            :           :         :            :           :

Extraer variables de tabla altas

Las variables en una tabla alta o un horario alto son cada matrices altas de diferentes tipos de datos subyacentes. Los métodos de indexación estándar de mesas y horarios también se aplican a mesas altas y horarios altos.

Por ejemplo, indexe una tabla alta utilizando la notación de puntos para recuperar una única variable de datos como una matriz alta.T.VariableName

tt.Var1
ans =    1,000×1 tall double column vector      0.5377     1.8339    -2.2588     0.8622     0.3188    -1.3077    -0.4336     0.3426       :       :

Utilice la terminación de tabulación para buscar las variables en una tabla si no puede recordar un nombre de variable preciso. Por ejemplo, escriba y, a continuación, presione.tt.Tab Aparece un menú:

También puede realizar varios niveles de indexación. Por ejemplo, extraiga los primeros 5 elementos de la variable.Var2 En este caso, debe utilizar una de las formas admitidas de indexación para matrices altas entre paréntesis.

tt.Var2(1:5)
ans =    5×1 tall double column vector      0.6737    -0.6691    -0.4003    -0.6718     0.5756

Consulte o para obtener más información de indexación.Acceda a los datos de una tablaSeleccione datos de calendario por tiempo de fila y tipo de variable

Concatenación con Tall arrays

Para concatenar dos o más matrices altas, como en, cada una de las matrices altas debe derivarse de una sola matriz alta y no debe haber sido indexada de manera diferente en la primera dimensión.[A1 A2 A3 …] Las operaciones de indexación incluyen funciones como,,,,, y así sucesivamente.vertcatsplitapplysortcell2matsynchronizeretime

Por ejemplo, concatenar unas cuantas columnas para crear una nueva matriz alta.tt

[tt.Var1 tt.Var2]
ans =    1,000×2 tall double matrix      0.5377    0.6737     1.8339   -0.6691    -2.2588   -0.4003     0.8622   -0.6718     0.3188    0.5756    -1.3077   -0.7781    -0.4336   -1.0636     0.3426    0.5530       :         :       :         :

Para combinar matrices altas con diferentes almacenes de datos subyacentes, se recomienda utilizar para escribir las matrices (o los resultados del cálculo) en el disco y, a continuación, crear un nuevo almacén de datos que haga referencia a esas ubicaciones:write

files = {'folder/path/to/file1','folder/path/to/file2'}; ds = datastore(files);

Asignación y eliminación con Tall arrays

Las mismas reglas de subíndices se aplican si utiliza la indexación para asignar o eliminar elementos de una matriz alta. La eliminación se realiza asignando uno o más elementos a la matriz vacía,.[]

"()" Asignación

Puede asignar elementos a una matriz alta utilizando la sintaxis general.A(m,n,...) = B La matriz alta debe existir.A El primer subíndice debe ser dos puntos o un vector lógico alto.m: Con esta sintaxis, puede ser:B

  • Escalar

  • Una matriz alta derivada de Where es el mismo subíndice que el anterior.A(m,…)m Por ejemplo,.A(m,1:10)

  • Una matriz vacía (para eliminación)[]

"." Asignación

Para la indexación de tablas mediante la sintaxis, la matriz debe ser una matriz alta con el número adecuado de filas.A.Var1 = BB Normalmente, se deriva de los datos existentes en la tabla alta. puede ser una variable nueva o existente en la tabla alta.BVar1

No puede asignar matrices altas como variables en una tabla normal, incluso si la tabla está vacía.

Extraiga el número especificado de filas en orden ordenado

Ordenar todos los datos en una matriz alta puede ser un cálculo costoso. Muy a menudo, sólo un subconjunto de filas al principio o al final de una matriz alta es necesario para responder a preguntas como "¿Cuál es la primera fila de estos datos por año?"

La función devuelve un número especificado de filas en orden ordenado para este propósito.topkrows Por ejemplo, se utiliza para extraer las 12 filas superiores ordenadas en orden descendente por la segunda columna.topkrows

t_top12 = gather(topkrows(tt,12,2))
Evaluating tall expression using the Local MATLAB Session: Evaluation completed in 0.067 sec  t_top12 =    12×3 table        Var1       Var2       Var3       ________    ______    ________       -1.0322    3.5699     -1.4689       1.3312    3.4075     0.17694     -0.27097    3.1585     0.50127      0.55095    2.9745       1.382      0.45168    2.9491     -0.8215      -1.7115    2.7526     -0.3384     -0.21317    2.7485      1.9033     -0.43021    2.7335     0.77616     -0.59003    2.7304     0.67702      0.47163    2.7292     0.92099     -0.47615     2.683    -0.26113      0.72689    2.5383    -0.57588

Resumir el contenido de Tall array

La función devuelve información útil sobre cada variable en una tabla o un cronograma altos, como los valores mínimo y máximo de las variables numéricas, y el número de apariciones de cada categoría para las variables categóricas.summary

Por ejemplo, cree una tabla alta para el conjunto de datos y muestre la información de resumen.outages.csv Este conjunto de datos contiene variables numéricas, DateTime y categóricas.

fmts = {'%C' '%D' '%f' '%f' '%D' '%C'}; ds = datastore('outages.csv','TextscanFormats',fmts); T = tall(ds); summary(T)
Evaluating tall expression using the Local MATLAB Session: - Pass 1 of 2: Completed in 0.16 sec - Pass 2 of 2: Completed in 0.19 sec Evaluation completed in 0.46 sec  Variables:      Region: 1,468×1 categorical         Values:              MidWest        142                NorthEast      557                SouthEast      389                SouthWest       26                West           354         OutageTime: 1,468×1 datetime         Values:              Min    2002-02-01 12:18             Max    2014-01-15 02:41      Loss: 1,468×1 double         Values:              Min            0                  Max            23418              NumMissing     604         Customers: 1,468×1 double         Values:              Min            0                       Max            5.9689e+06              NumMissing     328              RestorationTime: 1,468×1 datetime         Values:              Min            2002-02-07 16:50              Max            2042-09-18 23:31              NumMissing     29                     Cause: 1,468×1 categorical         Values:              attack                294               earthquake              2               energy emergency      188               equipment fault       156               fire                   25               severe storm          338               thunder storm         201               unknown                24               wind                   95               winter storm          145 

Devolver subconjunto de resultados de cálculo

Muchos de los ejemplos de esta página se usan para evaluar expresiones y llevar los resultados a la memoria.gather Sin embargo, en estos ejemplos también es trivial que los resultados quepan en la memoria, ya que solo unas pocas filas se indexan a la vez.

En los casos en los que no esté seguro de si el resultado de una expresión encajará en la memoria, se recomienda que utilice o.gather(head(X))gather(tail(X)) Estos comandos todavía evalúan todos los cálculos en cola, pero devuelven sólo una pequeña cantidad del resultado que se garantiza que caben en la memoria.

Si está seguro de que el resultado de un cálculo no cabe en la memoria, utilice para evaluar la matriz alta y escribir los resultados en el disco en su lugar.write

Consulte también

| | | | |

Temas relacionados