Длинные массивы слишком велики, чтобы помещаться в памяти, поэтому обычно просматривать подмножества данных, а не весь массив. На этой странице показаны методы извлечения и просмотра фрагментов длинный массив.
Используйте head функция для извлечения первых строк в длинный массив. head не принудительно вычисляет массив, поэтому необходимо использовать gather чтобы просмотреть результат.
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Точно так же можно использовать 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Все длинные массивы поддерживают индексацию круглых скобок. Когда вы индексируете длинный массив с помощью круглых скобок, таких как T(A) или T(A,B)Результатом является новый длинный массив, содержащий только указанные строки и столбцы (или переменные).
Как и большинство других операций на длинных массивах, выражения индексации не оцениваются немедленно. Вы должны использовать gather для вычисления операции индексации. Для получения дополнительной информации смотрите Отсроченная оценка длинных массивов.
Можно выполнить индексацию следующих типов в первой размерности длинный массив:
B = A(:,…), где : выбирает все строки в A.
B = A(idx,…), где idx является tall summeric вектора-столбца или неталльным числовым вектором.
B = A(L,…), где L является tall или non-tall логическим массивом той же высоты, что и A. Например, можно использовать реляционные операторы, такие как tt(tt.Var1 < 10,:). Когда вы индексируете длинный массив с tall logical array, существует несколько требований. Каждый из длинных массивов:
Должен быть тот же размер в первой размерности.
Должен быть выведен из один длинный массив.
В первом измерении индексация по-другому не должна быть выполнена.
B = A(P:D:Q,…) или B = A(P:Q,…), где P:D:Q и P:Q действительны colon выражения индексации.
head(tt,k) предоставляет ярлык для tt(1:k,:).
tail(tt,k) предоставляет ярлык для tt(end-k:end,:).
Кроме того, количество нижних индексов, которые вы должны задать, зависит от того, сколько размерности имеет массив:
Для tall векторов-столбцов можно задать один индекс, такой как t(1:10).
Для tall векторов-строк, длинных таблиц и длинных расписаний необходимо задать две нижние индексы.
Для длинные массивы с двумя или более размерностями необходимо задать две или более нижних индексов. Для примера, если массив имеет три размерности, можно использовать такое выражение, как tA(1:10,:,:) или tA(1:10,:), но не линейные выражения индексации, такие как tA(1:10) или tA(:).
Совет
find функция находит ненулевые элементы в tall векторов-столбцов и может быть полезной, чтобы сгенерировать вектор индексов для элементов, которые удовлетворяют конкретным условиям. Для примера, k = find(X<0) возвращает линейные индексы для всех отрицательных элементов в X.
Например, используйте индексацию круглых скобок, чтобы получить первые десять строк 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
: : :
: : :Извлеките последние 5 значений табличной переменной Var1.
tt(end-5:end,'Var1')ans =
6×1 tall table
Var1
________
1.769
1.5106
0.16401
-0.28276
1.1522
-1.1465Извлеките каждую 100-ю строку из длинная таблица.
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
: : :
: : :Переменными в длинная таблица или длинное расписание являются каждые длинные массивы различных базовых типов данных. Стандартные методы индексирования таблиц и расписаний также применяются к длинные таблицы и длинные расписания, включая использование timerange, withtol, и vartype.
Например, индексируйте длинная таблица с помощью записи через точку 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
:
:Используйте заполнение клавишей Tab, чтобы просмотреть переменные в таблице, если вы не можете запомнить точное имя переменной. Для примера введите tt. а затем нажмите клавишу Tab. Всплывающее меню:

Можно также выполнить несколько уровней индексации. Например, извлеките первые 5 элементов переменной Var2. В этом случае необходимо использовать одну из поддерживаемых форм индексации для длинные массивы в круглых скобках.
tt.Var2(1:5)
ans =
5×1 tall double column vector
0.6737
-0.6691
-0.4003
-0.6718
0.5756Дополнительные сведения об индексации см. в разделах Доступ к данным в таблицах или Выбор времени в Timetable.
Порядок объединить два или более длинные массивы, как в [A1 A2 A3 …]каждый из длинные массивы должен быть выведен из один длинный массив и не должен быть индексирован по-разному в первой размерности. Операции индексации включают такие функции, как vertcat, splitapply, sort, cell2mat, synchronize, retimeи так далее.
Например, соедините несколько столбцов из tt чтобы создать новую tall matrix.
[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
: :
: :Чтобы объединить длинные массивы с различными базовыми хранилищами данных, рекомендуется использовать write чтобы записать массивы (или результаты вычисления) на диск, а затем создать один новый datastore, ссылающийся на эти расположения:
files = {'folder/path/to/file1','folder/path/to/file2'};
ds = datastore(files);Те же правила индексирования применяются, используется ли индексация для назначения или удаления элементов из длинный массив. Удаление достигается путем присвоения одного или нескольких элементов пустой матрице [].
Можно назначить элементы в длинный массив с помощью общего синтаксиса A(m,n,...) = B. Область длинного массива A должно существовать и иметь непустое второе измерение. Первый индекс m должно быть либо двоеточием : или tall logical вектор. С помощью этого синтаксиса B могут быть:
Скаляр
A длинного массива, полученная из A(m,…) где m является тем же индексом, что и выше. Для примера, A(m,1:10).
Пустая матрица, [] (для удаления)
Для индексации таблицы с использованием синтаксиса A.Var1 = B, массив B должен быть длинный массив с соответствующим количеством строк. Как правило, B определяется на основе существующих данных в длинная таблица. Var1 может быть новой или существующей переменной в длинная таблица.
Вы не можете назначить длинные массивы как переменные в обычной таблице, даже если таблица пуста.
Сортировка всех данных в длинный массив может быть дорогим вычислением. Чаще всего только подмножество строк в начале или конце длинный массив требуется для ответа на такие вопросы, как «Что является первой строкой в этих данных по годам?»
topkrows функция возвращает заданное количество строк в сортированном порядке для этой цели. Для примера используйте topkrows для извлечения первых 12 строк, отсортированных в порядке убывания вторым столбцом.
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 summary функция возвращает полезную информацию о каждой переменной в длинная таблица или timetable, например, минимальное и максимальное значения числовых переменных и количество вхождений каждой категории для категориальных переменных.
Например, создайте длинная таблица для outages.csv набор данных и отображение сводной информации. Этот набор данных содержит числовые, datetime и категориальные переменные.
fmts = {'%C' '%D' '%f' '%f' '%D' '%C'};
ds = tabularTextDatastore('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 Многие примеры на этой странице используют gather для вычисления выражений и ввода результатов в память. Однако в этих примерах также тривиально, чтобы результаты помещались в памяти, поскольку одновременно индексируется только несколько строк.
В тех случаях, когда вы не уверены, помещается ли результат выражения в памяти, рекомендуется использовать gather(head(X)) или gather(tail(X)). Эти команды все еще оценивают все вычисления в очереди, но возвращают лишь небольшое количество результата, который гарантированно помещается в памяти.
Если вы уверены, что результат вычисления не помещается в памяти, используйте write чтобы вычислить длинный массив и записать результаты на диск.
gather | head | table | tail | tall | topkrows