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.

Tall arrays

Los arrays altos se utilizan para trabajar con datos de memoria que están respaldados por un.datastore Los datastores le permiten trabajar con grandes conjuntos de datos en pequeños trozos que caben individualmente en la memoria, en lugar de cargar todo el conjunto de datos en la memoria a la vez. Las matrices altas amplían esta capacidad para permitirle trabajar con datos que no son de memoria mediante funciones comunes.

¿Qué es un Tall array?

Puesto que los datos no se cargan en la memoria a la vez, las matrices altas pueden ser arbitrariamente grandes en la primera dimensión (es decir, pueden tener cualquier número de filas). En lugar de escribir código especial que tenga en cuenta el enorme tamaño de los datos, como con técnicas como MapReduce, las matrices altas le permiten trabajar con grandes conjuntos de datos de una manera intuitiva que es similar a la forma en que trabajaría con matrices en memoria.MATLAB® Muchos operadores y funciones principales funcionan igual con matrices altas que con matrices en memoria. trabaja con pequeños trozos de los datos a la vez, controlando todos los datos de fragmentación y procesamiento en segundo plano, por lo que las expresiones comunes, como, trabajar con conjuntos de macrodatos.MATLABA+B

Beneficios de Tall arrays

A diferencia de las matrices en memoria, las matrices altas normalmente permanecen sin evaluar hasta que se solicita que los cálculos se realicen mediante la función.gather Esto le permite trabajar rápidamente con grandes conjuntos de datos.deferred evaluation Cuando finalmente se solicita la salida mediante, combina los cálculos en cola donde sea posible y toma el número mínimo de pasadas a través de los datos.gatherMATLAB El número de pasadas a través de los datos afecta en gran medida el tiempo de ejecución, por lo que se recomienda que solicite la salida solo cuando sea necesario.

Nota

Dado que devuelve resultados como matrices en memoria, se aplican consideraciones de memoria estándar. podría ejecutarse sin memoria si el resultado devuelto es demasiado grande.gatherMATLABMATLABgather

Crear mesas altas

Las tablas altas son como tablas en memoria, excepto que pueden tener cualquier número de filas.MATLAB Para crear una tabla alta a partir de un conjunto de datos de gran tamaño, primero debe crear un para los datos.datastore Si el datastore contiene datos tabulares, devuelve una tabla alta que contiene los datos.dstall(ds) Consulte para obtener más información sobre la creación de almacenes de datos.Función Datastore

Cree un almacén de datos de hoja de cálculo que apunte a un archivo tabular de vuelos aéreos. Para las carpetas que contienen una colección de archivos, puede especificar toda la ubicación de la carpeta, o usar el carácter comodín, para incluir varios archivos con la misma extensión de archivo en el almacén de datos.'*.csv' Limpie los datos tratando los valores como datos faltantes para que los Reemplace con valores.'NA'datastoreNaN Además, establezca el formato de algunas variables de texto para que las lea como matrices de celdas de vectores de caracteres.%sdatastore

ds = datastore('airlinesmall.csv'); ds.TreatAsMissing = 'NA'; ds.SelectedFormats{strcmp(ds.SelectedVariableNames,'TailNum')} = '%s'; ds.SelectedFormats{strcmp(ds.SelectedVariableNames,'CancellationCode')} = '%s';

Cree una tabla alta desde el almacén de datos. Cuando se realizan cálculos en esta tabla alta, el almacén de datos subyacente Lee fragmentos de información y los pasa a la tabla alta para procesarlos. Ni el almacén de datos ni la tabla alta conservan ninguno de los datos subyacentes.

tt = tall(ds)
tt =    M×29 tall table       Year    Month    DayofMonth    DayOfWeek    DepTime    CRSDepTime    ArrTime    CRSArrTime    UniqueCarrier    FlightNum    TailNum    ActualElapsedTime    CRSElapsedTime    AirTime    ArrDelay    DepDelay    Origin    Dest     Distance    TaxiIn    TaxiOut    Cancelled    CancellationCode    Diverted    CarrierDelay    WeatherDelay    NASDelay    SecurityDelay    LateAircraftDelay     ____    _____    __________    _________    _______    __________    _______    __________    _____________    _________    _______    _________________    ______________    _______    ________    ________    ______    _____    ________    ______    _______    _________    ________________    ________    ____________    ____________    ________    _____________    _________________      1987    10       21            3             642        630           735        727          'PS'             1503         'NA'        53                   57               NaN         8          12          'LAX'     'SJC'    308         NaN       NaN        0            'NA'                0           NaN             NaN             NaN         NaN              NaN                   1987    10       26            1            1021       1020          1124       1116          'PS'             1550         'NA'        63                   56               NaN         8           1          'SJC'     'BUR'    296         NaN       NaN        0            'NA'                0           NaN             NaN             NaN         NaN              NaN                   1987    10       23            5            2055       2035          2218       2157          'PS'             1589         'NA'        83                   82               NaN        21          20          'SAN'     'SMF'    480         NaN       NaN        0            'NA'                0           NaN             NaN             NaN         NaN              NaN                   1987    10       23            5            1332       1320          1431       1418          'PS'             1655         'NA'        59                   58               NaN        13          12          'BUR'     'SJC'    296         NaN       NaN        0            'NA'                0           NaN             NaN             NaN         NaN              NaN                   1987    10       22            4             629        630           746        742          'PS'             1702         'NA'        77                   72               NaN         4          -1          'SMF'     'LAX'    373         NaN       NaN        0            'NA'                0           NaN             NaN             NaN         NaN              NaN                   1987    10       28            3            1446       1343          1547       1448          'PS'             1729         'NA'        61                   65               NaN        59          63          'LAX'     'SJC'    308         NaN       NaN        0            'NA'                0           NaN             NaN             NaN         NaN              NaN                   1987    10        8            4             928        930          1052       1049          'PS'             1763         'NA'        84                   79               NaN         3          -2          'SAN'     'SFO'    447         NaN       NaN        0            'NA'                0           NaN             NaN             NaN         NaN              NaN                   1987    10       10            6             859        900          1134       1123          'PS'             1800         'NA'       155                  143               NaN        11          -1          'SEA'     'LAX'    954         NaN       NaN        0            'NA'                0           NaN             NaN             NaN         NaN              NaN                   :       :        :             :            :          :             :          :             :                :            :          :                    :                 :          :           :           :         :        :           :         :          :            :                   :           :               :               :           :                :     :       :        :             :            :          :             :          :             :                :            :          :                    :                 :          :           :           :         :        :           :         :          :            :                   :           :               :               :           :                : 

La pantalla indica que el número de filas,, es actualmente desconocido. muestra algunas de las filas y las elipses verticales indican que existen más filas en la tabla alta que no se están visualizando actualmente.MMATLAB:

Crear horarios altos

Si los datos con los que está trabajando tienen un tiempo asociado con cada fila de datos, puede convertir la tabla alta en un horario alto. Hay varias maneras de crear un horario alto:

En este caso, la tabla alta tiene tiempos asociados con cada fila, pero se dividen en varias variables de tabla como,,, y así sucesivamente.ttYearMonthDayofMonth Combine todos estos fragmentos de información de fecha y hora en una sola variable DateTime nueva y alta, que se basa en los tiempos de salida.DatesDepTime Crear un horario alto utilizando como los tiempos de fila.Dates Puesto que es la única variable DateTime en la tabla, la función la utiliza automáticamente para los tiempos de fila.Datestable2timetable

hrs = (tt.DepTime - mod(tt.DepTime,100))/100; mins = mod(tt.DepTime,100); tt.Dates = datetime(tt.Year, tt.Month, tt.DayofMonth, hrs, mins, 0); tt(:,1:8) = []; TT = table2timetable(tt)
TT =    M×21 tall timetable              Dates           UniqueCarrier    FlightNum    TailNum    ActualElapsedTime    CRSElapsedTime    AirTime    ArrDelay    DepDelay    Origin    Dest     Distance    TaxiIn    TaxiOut    Cancelled    CancellationCode    Diverted    CarrierDelay    WeatherDelay    NASDelay    SecurityDelay    LateAircraftDelay     ____________________    _____________    _________    _______    _________________    ______________    _______    ________    ________    ______    _____    ________    ______    _______    _________    ________________    ________    ____________    ____________    ________    _____________    _________________      21-Oct-1987 06:42:00    'PS'             1503         'NA'        53                   57               NaN         8          12          'LAX'     'SJC'    308         NaN       NaN        0            'NA'                0           NaN             NaN             NaN         NaN              NaN                   26-Oct-1987 10:21:00    'PS'             1550         'NA'        63                   56               NaN         8           1          'SJC'     'BUR'    296         NaN       NaN        0            'NA'                0           NaN             NaN             NaN         NaN              NaN                   23-Oct-1987 20:55:00    'PS'             1589         'NA'        83                   82               NaN        21          20          'SAN'     'SMF'    480         NaN       NaN        0            'NA'                0           NaN             NaN             NaN         NaN              NaN                   23-Oct-1987 13:32:00    'PS'             1655         'NA'        59                   58               NaN        13          12          'BUR'     'SJC'    296         NaN       NaN        0            'NA'                0           NaN             NaN             NaN         NaN              NaN                   22-Oct-1987 06:29:00    'PS'             1702         'NA'        77                   72               NaN         4          -1          'SMF'     'LAX'    373         NaN       NaN        0            'NA'                0           NaN             NaN             NaN         NaN              NaN                   28-Oct-1987 14:46:00    'PS'             1729         'NA'        61                   65               NaN        59          63          'LAX'     'SJC'    308         NaN       NaN        0            'NA'                0           NaN             NaN             NaN         NaN              NaN                   08-Oct-1987 09:28:00    'PS'             1763         'NA'        84                   79               NaN         3          -2          'SAN'     'SFO'    447         NaN       NaN        0            'NA'                0           NaN             NaN             NaN         NaN              NaN                   10-Oct-1987 08:59:00    'PS'             1800         'NA'       155                  143               NaN        11          -1          'SEA'     'LAX'    954         NaN       NaN        0            'NA'                0           NaN             NaN             NaN         NaN              NaN                   :                       :                :            :          :                    :                 :          :           :           :         :        :           :         :          :            :                   :           :               :               :           :                :     :                       :      

Crear Tall arrays

Cuando se extrae una variable de una tabla alta o un horario alto, el resultado es una matriz alta del tipo de datos subyacente adecuado. Una matriz alta puede ser numérica, lógica, fecha y hora, duración, duración del calendario, categórica, cadena o matriz de celdas. Además, puede convertir una matriz en memoria en una matriz alta con.AtA = tall(A) La matriz en memoria debe ser uno de los tipos de datos admitidos.A

Extraiga el retraso de la llegada del horario alto.ArrDelayTT Esto crea una nueva variable de matriz alta con el tipo de datos subyacente Double.

a = TT.ArrDelay
a =    M×1 tall double column vector       8      8     21     13      4     59      3     11     :     :

Las funciones y son útiles para determinar el tipo de datos subyacente de una matriz alta.classUnderlyingisaUnderlying

Evaluación diferida

Un aspecto importante de los arrays altos es que a medida que trabaja con ellos, la mayoría de las operaciones no se realizan inmediatamente. Estas operaciones parecen ejecutarse rápidamente, porque el cálculo real se aplaza hasta que solicite específicamente que se realicen los cálculos. Puede desencadenar la evaluación de una matriz alta con la función (para llevar el resultado a la memoria) o la función (para escribir el resultado en el disco).gatherwrite Esta evaluación diferida es importante porque incluso un comando simple como ejecutado en una matriz alta con mil millones de filas no es un cálculo rápido.size(X)

A medida que trabaja con matrices altas, realiza un seguimiento de todas las operaciones que se realizarán.MATLAB Esta información se utiliza para optimizar el número de pasadas a través de los datos que serán necesarios cuando solicite la salida con la función.gather Por lo tanto, es normal trabajar con matrices altas no evaluadas y solicitar la salida solo cuando la necesite. Para obtener más información, consulte.Evaluación diferida de matrices altas

Calcule la media y la desviación estándar del retardo de llegada. Utilice estos valores para construir los umbrales superior e inferior para los retrasos que están dentro de una desviación estándar de la media. Tenga en cuenta que el resultado de cada operación indica que la matriz aún no se ha calculado.

m = mean(a,'omitnan')
m =    tall double      ?  Preview deferred. Learn more.
s = std(a,'omitnan')
s =    tall      ?  Preview deferred. Learn more.
one_sigma_bounds = [m-s m m+s]
one_sigma_bounds =    M×N×... tall array      ?    ?    ?    ...     ?    ?    ?    ...     ?    ?    ?    ...     :    :    :     :    :    :  Preview deferred. Learn more.

Evaluación congather

La ventaja de la evaluación retrasada es que cuando llegue el momento de realizar los cálculos, a menudo es posible combinar las operaciones de tal manera que se minimice el número de pasadas a través de los datos.MATLAB Por lo tanto, incluso si realiza muchas operaciones, solo realiza pases adicionales a través de los datos cuando sea absolutamente necesario.MATLAB

La función fuerza la evaluación de todas las operaciones en cola y lleva la salida resultante a la memoria.gather Por esta razón, se puede pensar en un puente entre matrices altas y matrices en memoria.gather Por ejemplo, no puede controlar o bucles mediante una matriz lógica alta, pero una vez que se evalúa la matriz con se convierte en una matriz lógica en memoria que puede usar en estos contextos.ifwhilegather

Dado que devuelve todo el resultado, debe asegurarse de que el resultado se ajuste en la memoria.gatherMATLAB

Se usa para calcular y llevar el resultado a la memoria.gatherone_sigma_bounds En este caso, requiere varias operaciones para calcular, pero combina las operaciones en una pasada a través de los datos.one_sigma_boundsMATLAB Dado que los datos de este ejemplo son pequeños, se ejecutan rápidamente.gather Sin embargo, la eliminación de los pases a través de los datos se vuelve más valiosa a medida que aumenta el tamaño de los datos.

sig1 = gather(one_sigma_bounds)
Evaluating tall expression using the Local MATLAB Session: - Pass 1 of 1: Completed in 1.5 sec Evaluation completed in 1.8 sec  sig1 =    -23.4572    7.1201   37.6975

Puede especificar varias entradas y salidas si desea evaluar varias matrices altas a la vez.gather Esta técnica es más rápida que llamar varias veces.gather Por ejemplo, calcule el retardo mínimo y máximo de llegada. Calculado por separado, cada valor requiere un paso a través de los datos para calcular un total de dos pasadas. Sin embargo, calcular ambos valores simultáneamente requiere solo un paso a través de los datos.

[max_delay, min_delay] = gather(max(a),min(a))
Evaluating tall expression using the Local MATLAB Session: - Pass 1 of 1: Completed in 1.1 sec Evaluation completed in 1.1 sec  max_delay =          1014   min_delay =     -64

Estos resultados indican que, en promedio, la mayoría de los vuelos llegan unos 7 minutos tarde. Pero es dentro de una desviación estándar para que un vuelo sea hasta 37 minutos tarde o 23 minutos antes. El vuelo más rápido en el conjunto de datos llegó aproximadamente una hora antes, y el último vuelo se retrasó por muchas horas.

Los arrays altos de guardar, cargar y apuntar

La función guarda la de un array alto, pero no copia ninguno de los datos.savestate El archivo resultante suele ser pequeño..mat Sin embargo, los archivos de datos originales deben estar disponibles en la misma ubicación para poder usarlos posteriormente.load

La función realiza una copia de los datos y guarda la copia como una colección de archivos, que puede consumir una gran cantidad de espacio en disco. ejecuta todas las operaciones pendientes en el array alto para calcular los valores antes de escribir.writewrite Una vez que copia los datos, es independiente de los datos RAW originales.write Por lo tanto, puede recrear la matriz alta a partir de los archivos escritos, incluso si los datos RAW originales ya no están disponibles.

Puede recrear la matriz alta a partir de los archivos escritos creando un nuevo almacén de datos que apunte a la ubicación donde se escribieron los archivos. Esta funcionalidad le permite crear o de datos de matriz altos.checkpointssnapshots Crear un punto de control es una buena manera de guardar los resultados del preprocesamiento de los datos, de modo que los datos se encuentran en un formulario que es más eficaz de cargar.

Si tiene una matriz alta, puede escribirla en la carpeta con el comando:TAlocation

write(location,TA);

Más tarde, para reconstruir a partir de los archivos escritos, utilice los comandos:TA

ds = datastore(location); TA = tall(ds);

Además, puede utilizar la función para desencadenar la evaluación de una matriz alta y escribir los resultados en el disco.write Este uso de es similar a, sin embargo, no trae ningún resultado en la memoria.writegatherwrite

Funciones de soporte

La mayoría de las funciones principales funcionan de la misma manera con matrices altas que con matrices en memoria. Sin embargo, en algunos casos la forma en que una función funciona con matrices altas es especial o tiene limitaciones. Puede saber si una función admite matrices altas, y si tiene alguna limitación, observando la parte inferior de la página de referencia de la función en la sección (para ver un ejemplo, consulte).Extended Capabilitiesfilloutliers

Para obtener una lista filtrada de todas las funciones que admiten matrices altas, consulteMATLAB Function List (Tall Arrays).

Las matrices altas también son compatibles con varias cajas de herramientas, lo que le permite hacer cosas como escribir algoritmos de aprendizaje automático, implementar aplicaciones independientes y ejecutar cálculos en paralelo o en un clúster. Para obtener más información, consulte.Extienda los arrays altos con otros productos

Consulte también

| | | |

Temas relacionados