Создание tall array
создает длинный массив сверху datastore t
= tall(ds
)ds
.
Если ds
datastore для табличных данных (так, чтобы read
и readall
методы datastore возвращают таблицы или расписания), затем t
длинная таблица или длинное расписание, в зависимости от того, что datastore сконфигурирован, чтобы возвратить. Табличные данные являются данными, которые располагаются прямоугольным способом с каждой строкой, имеющей то же количество записей.
В противном случае, t
высокий массив ячеек.
преобразует массив в оперативной памяти t
= tall(A
)A
в длинный массив. Базовый тип данных t
совпадает с class(A)
. Этот синтаксис полезен, когда необходимо быстро создать длинный массив, такой что касается отладки или прототипирований алгоритмов.
В R2019b и позже, можно бросить массивы в оперативной памяти в длинные массивы для более эффективных операций на массиве. После того, как вы преобразуете в длинный массив, MATLAB® старается не делать временные копии целого массива и работает над данными в меньших блоках. Это позволяет вам выполнить более широкую область значений операций на массиве, не исчерпывая память.
Преобразуйте datastore в длинный массив.
Во-первых, создайте datastore для набора данных. Можно задать или местоположение всего или файла прямого доступа для набора данных с помощью datastore(location)
создать datastore. 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
создает высокий массив ячеек вместо этого.
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'} : : : : : : : :
Можно использовать много общих операторов 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.5 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 и более поздних релизах, когда вы преобразуете массивы в оперативной памяти в длинные массивы, можно выполнить вычисления на массиве, не требуя дополнительной памяти для временных копий данных. Например, этот код нормирует данные в большой матрице и затем вычисляет сумму всех строк и столбцов. Версия в оперативной памяти этого вычисления должна не только сохранить массив на 5 ГБ, но также и иметь достаточно памяти в наличии, чтобы создать временные копии массива.
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 4.4 sec - Pass 2 of 2: Completed in 5.7 sec Evaluation completed in 10 sec
S = -3.1878e-10
ds
— Введите datastoreВведите datastore в виде объекта datastore. Смотрите Datastore для получения дополнительной информации о создании объекта datastore для вашего набора данных.
Длинные массивы работают только с хранилищами данных, которые детерминированы. Таким образом, если вы используете read
на datastore, сброс datastore с reset
, и затем считайте datastore снова, затем возвращенные данные должны быть тем же самым в обоих случаях. Вычисления длинного массива, включающие datastore, который не детерминирован, могут привести к непредсказуемым результатам. Смотрите Выбирают Datastore for File Format или Application для получения дополнительной информации.
Пример: ds = tabularTextDatastore('airlinesmall.csv')
задает один файл.
Пример: ds = tabularTextDatastore('*.csv')
задает набор .csv
файлы.
Пример: ds = spreadsheetDatastore('C:\MyData')
задает папку файлов электронной таблицы.
Пример: ds = datastore('hdfs:///data/')
задает набор данных в файловой системе HDFS.
A
— Переменная в оперативной памятиПеременная в оперативной памяти в виде массива.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| table
| timetable
| string
| cell
| categorical
| datetime
| duration
| calendarDuration
Поддержка комплексного числа: Да
t
— Длинный массивДлинный массив, возвращенный как один из этих типов:
При преобразовании datastore, t
длинная таблица или длинное расписание для табличных хранилищ данных. В противном случае, t
высокий массив ячеек.
При преобразовании массива в оперативной памяти, базового типа данных t
совпадает с class(A)
.
Смотрите Отсроченную оценку Длинных массивов для получения информации о том, как эффективно работать с длинными массивами.
Смотрите Расширение длинных массивов с помощью других продуктов для получения информации о том, как использовать длинные массивы с:
Statistics and Machine Learning Toolbox™
Parallel Computing Toolbox™
MATLAB Parallel Server™
Database Toolbox™
MATLAB Compiler™
Если вам установили Parallel Computing Toolbox, то, когда вы используете tall
, MATLAB автоматически открывает параллельный пул рабочих на вашей локальной машине. MATLAB запускает расчеты через доступных рабочих. Управляйте параллельным поведением с параллельными настройками, включая увеличение масштаба к кластеру.
Для получения дополнительной информации смотрите Длинные массивы Использования на Параллельном Пуле (Parallel Computing Toolbox).
classUnderlying
| datastore
| gather
| isaUnderlying
| istall
| mapreducer
| topkrows
| write
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.