tall

Создайте длинный массив

Синтаксис

Описание

пример

t = tall(ds) создает длинный массив поверх datastore ds.

  • Если ds является datastore для табличных данных (так что read и readall методы возвращаемых таблиц datastore или timetables), затем t является длинная таблица или длинное расписание, в зависимости от того, что сконфигурировано для возврата datastore. Табличные данные являются данными, которые расположены прямоугольным образом с каждой строкой, имеющей одинаковое количество записей.

  • В противном случае t - высокий массив ячеек.

пример

t = tall(A) преобразует массив в памяти A в длинный массив. Базовый тип данных t то же, что и class(A). Этот синтаксис полезен, когда вам нужно быстро создать длинный массив, например, для отладки или прототипирований алгоритмов.

В R2019b и более поздних версиях можно привести массивы в памяти в длинные массивы для более эффективных операций над массивом. После преобразования в длинный массив, MATLAB® избегает создания временных копий всего массива и работает с данными в небольших блоках. Это позволяет вам выполнить более широкую область значений операций в массиве, не заканчивая памятью.

Примеры

свернуть все

Преобразуйте datastore в длинный массив.

Сначала создайте datastore для набора данных. Вы можете задать полное или относительное расположение файла для набора данных используя datastore(location) для создания datastore. The location аргумент может задать:

  • Один файл, например 'airlinesmall.csv'

  • Несколько файлов с таким же расширением, например '*.csv'

  • Целая папка файлов, таких как 'C:\MyData'

tabularTextDatastore также имеет несколько опций, чтобы задать свойства формата файла и текста при создании datastore.

Создайте datastore для airlinesmall.csv набор данных. Лечите 'NA' значения как отсутствующие данные, чтобы они были заменены на NaN значения. Выберите небольшое подмножество переменных для работы.

varnames = {'ArrDelay', 'DepDelay', 'Origin', 'Dest'};
ds = tabularTextDatastore('airlinesmall.csv', 'TreatAsMissing', 'NA', ...
    'SelectedVariableNames', varnames);

Использование tall чтобы создать длинный массив для данных в datastore. Начиная с данных в ds является табличным, результатом является длинная таблица. Если данные не табличны, то tall вместо этого создает tall массива ячеек.

T = tall(ds)
T =

  Mx4 tall table

    ArrDelay    DepDelay    Origin      Dest  
    ________    ________    _______    _______

        8          12       {'LAX'}    {'SJC'}
        8           1       {'SJC'}    {'BUR'}
       21          20       {'SAN'}    {'SMF'}
       13          12       {'BUR'}    {'SJC'}
        4          -1       {'SMF'}    {'LAX'}
       59          63       {'LAX'}    {'SJC'}
        3          -2       {'SAN'}    {'SFO'}
       11          -1       {'SEA'}    {'LAX'}
       :           :           :          :
       :           :           :          :

Для работы с tall arrays можно использовать множество простых операторов и функций MATLAB ®. Чтобы увидеть, работает ли функция с длинные массивы, смотрите раздел Extended Capabilities в нижней части страницы с описанием функции.

Преобразуйте datastore в длинная таблица, вычислите его размер с помощью отложенного вычисления, а затем выполните вычисление и верните результат в памяти.

Сначала создайте datastore для airlinesmall.csv набор данных. Лечите 'NA' значения как отсутствующие данные, чтобы они были заменены на NaN значения. Установите текстовый формат нескольких столбцов так, чтобы они считывались как массив ячеек из векторов символов. Преобразуйте datastore в длинная таблица.

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

  Mx29 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       
     :        :          :             :           :           :            :           :               :              :           :               :                  :              :          :           :           :          :          :          :          :           :               :               :             :               :             :              :                  :
     :        :          :             :           :           :            :           :               :              :           :               :                  :              :          :           :           :          :          :          :          :           :               :               :             :               :             :              :                  :

Отображение длинная таблица указывает, что MATLAB ® еще не знает, сколько строк данных находится в таблице.

Вычислите размер длинная таблица. Поскольку для вычисления размера длинный массив требуется полный проход через данные, MATLAB не сразу вычисляет значение. Вместо этого, как и большинство операций с длинные массивы, результатом является недооценённый длинный массив, значения и размер которого в настоящее время неизвестны.

s = size(T)
s =

  1x2 tall double row vector

    ?    ?

Используйте gather функция для выполнения отложенного вычисления и возврата результата в память. Результат, возвращенный size является тривиально маленьким вектором 1 на 2, который помещается в памяти.

sz = gather(s)
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 1.2 sec
Evaluation completed in 1.4 sec
sz = 1×2

      123523          29

Если вы используете gather на неразведенный длинный массив, тогда результат может не помещаться в памяти. Если вы не уверены, возвращен ли результат gather может помещаться в памяти, использовать gather(head(X)) или gather(tail(X)) чтобы принести в память только небольшой фрагмент результата вычисления.

Создайте массив случайных чисел в памяти, а затем преобразуйте его в длинный массив. Создание длинные массивы из массивов в памяти таким образом полезно для отладки или прототипирования новых программ. Массив в памяти все еще связан нормальными ограничениями памяти, и даже после преобразования в длинный массив он не может вырасти за пределы памяти.

A = rand(100,4);
tA = tall(A)
tA =

  100x4 tall double matrix

    0.8147    0.1622    0.6443    0.0596
    0.9058    0.7943    0.3786    0.6820
    0.1270    0.3112    0.8116    0.0424
    0.9134    0.5285    0.5328    0.0714
    0.6324    0.1656    0.3507    0.5216
    0.0975    0.6020    0.9390    0.0967
    0.2785    0.2630    0.8759    0.8181
    0.5469    0.6541    0.5502    0.8175
      :         :         :         :
      :         :         :         :

В R2019b и более поздних релизах, когда вы преобразовываете массивы в памяти в длинные массивы, можно выполнить вычисления на массиве, не требуя дополнительной памяти для временных копий данных. Например, этот код нормализует данные в большой матрице, а затем вычисляет сумму всех строк и столбцов. Версия этого вычисления в памяти должна не только хранить массив 5GB, но и иметь достаточно памяти, чтобы создать временные копии массива.

N = 25000;
tA = tall(rand(N));
tB = tA - mean(tA);
S = gather(sum(tB, [1,2]))
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 2: Completed in 2.9 sec
- Pass 2 of 2: Completed in 4.7 sec
Evaluation completed in 8 sec
S = -3.1878e-10

Входные параметры

свернуть все

Введите datastore, заданный как объект datastore. Смотрите Datastore для получения дополнительной информации о создании объекта datastore для вашего набора данных.

Длинные массивы работают только с детерминированными хранилищами данных. То есть, если вы используете read на datastore, сбросьте datastore с reset, и затем снова считайте datastore, тогда возвращенные данные должны быть одинаковыми в обоих случаях. Вычисления длинный массив с использованием datastore, который не детерминирован, могут привести к непредсказуемым результатам. Дополнительные сведения см. в разделе Выбор Datastore для формата файла или приложения.

Пример: ds = tabularTextDatastore('airlinesmall.csv') задает один файл.

Пример: ds = tabularTextDatastore('*.csv') задает набор .csv файлы.

Пример: ds = spreadsheetDatastore('C:\MyData') задает папку с файлами электронной таблицы.

Пример: ds = datastore('hdfs:///data/') задает набор данных в файловой системе HDFS.

Переменная в памяти, заданная как массив.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | table | timetable | string | cell | categorical | datetime | duration | calendarDuration
Поддержка комплексного числа: Да

Выходные аргументы

свернуть все

Длинный массив, возвращенный как один из следующих типов:

  • При преобразовании datastore t является длинная таблица или длинное расписание для табличных хранилищ данных. В противном случае t - высокий массив ячеек.

  • При преобразовании массива в памяти базовый тип данных t то же, что и class(A).

См. отсроченную оценку длинных массивов для получения информации о том, как эффективно работать с длинными массивами.

Совет

Расширенные возможности

Длинные» массивы
Осуществление вычислений с массивами, которые содержат больше строк, чем помещается в памяти.

Введенный в R2016b