文档

高存储器数据的阵列

高大的阵列用于使用由a支持的内存up-mement数据一起使用数据存储.数据存储使您能够在内存中单独容纳的小块中处理大数据集,而不是一次将整个数据集加载到内存中。长数组扩展了这一功能,使您能够使用通用函数处理内存不足的数据。

什么是高数组?

由于数据同时未加载到存储器中,因此高阵列可以在第一维度中任意大(即,它们可以具有任何数量的行)。而不是编写考虑数据的大小的特殊代码,例如使用MapReduce等技术,高大的阵列让您以直观的方式使用大型数据集,类似于您将与内存MATLAB一起使用的方式®数组。许多核心操作符和函数对于高数组的工作原理与它们对内存数组的工作原理相同。MATLAB一次处理小块的数据,在后台处理所有的数据分块和处理,使常见的表达式,如A + B,使用大数据集。

高排列的好处

与内存阵列不同,高大阵列通常保持未评估,直到您请求使用计算执行计算收集功能。这个延期评估允许您快速处理大数据集。当您最终请求输出使用收集,Matlab在可能的情况下结合了排队的计算,并通过数据占据最小次数。通过数据的传递数量大大影响执行时间,因此建议您仅在必要时请求输出。

请注意

收集返回结果作为内存中的MATLAB数组,适用标准内存考虑。如果返回的结果是收集太大。

创建高表

高表就像内存Matlab表一样,除了它们可以有任何数量的行。要从大型数据集创建一个高表,首先需要创建一个数据存储对于数据。如果是数据存储ds包含表格数据,然后高(DS)返回包含数据的高表。看到数据存储有关创建数据存储的详细信息。

创建一个电子表格数据存储,指向航空公司航班数据的表格文件。对于包含文件集合的文件夹,您可以指定整个文件夹位置,或使用通配符,‘* . csv‘,包括在数据存储区中包含具有相同文件扩展名的多个文件。通过处理清洁数据'na'值作为缺少数据的值数据存储用它们取代它们价值观。另外,将少数文本变量的格式设置为%S.数据存储将它们读为字符向量的单元格阵列。

ds =数据存储('airlinesmall.csv');ds。TreatAsMissing ='na';ds.SelectedFormats {strcmp (ds.SelectedVariableNames,'tailnum')} ='%s';ds.SelectedFormats {strcmp (ds.SelectedVariableNames,“CancellationCode”)} ='%s'

从数据存储创建一个高表。当您在这个高表上执行计算时,底层数据存储将读取数据块并将它们传递给高表进行处理。数据存储和高表都不保留任何底层数据。

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

显示屏指示行数,目前尚不清楚。MATLAB显示一些行,和垂直椭圆表明当前未显示的高表中存在更多行。

创造高的时间表

如果您使用的数据与每一行数据有关,那么您可以将高表转换为高的时间表。有几种方法可以创建一个高大的时间表:

在这种情况下,高大的桌子tt有时间与每行相关联,但它们被分解为几个表变量,如一年Dayofmonth.,等等。将所有这些datetime信息合并到一个新的tall datetime变量中日期,这是根据出发时间计算的DepTime.制定一个高的时间表日期作为行乘以。自日期是表中唯一的DateTime变量,是table2timetable功能会自动使用它的行时间。

小时= (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 schedule Dates UniqueCarrier FlightNum TailNum ActualElapsedTime CRSElapsedTime AirTime ArrDelay DepDelay Origin Dest Distance TaxiIn TaxiOut Cancelled CancellationCode altered CarrierDelay NASDelay SecurityDelay LateAircraftDelay ____________________ _____________ ________________ _________________ _____________________ ________ ________ ______ _____ ________ ______ _______ _________ ________________ ________ ____________ ____________ ________ _____________ _________________ 21 - 10月- 1987 06:42:00“PS”1503“NA”53 57南8 12“宽松”SJC 308年南南“NA”0南南南南南26 - 10月- 1987 10:21:00“PS”1550“NA”63 56南8 296南南“SJC”“钻”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 : : : : : : : : : : : : : : : : : : : : : : : :

创造高的数组

当您从高表或高时间表中提取变量时,结果将是适当的底层数据类型的高数组。高数组可以是数字、逻辑、日期时间、持续时间、日历持续时间、类别、字符串或单元格数组。此外,您还可以转换内存中的数组一个进入一个高大的阵列ta =高(a).内存阵列一个必须具有支持的数据类型之一。金宝app

提取到达延迟arrdelay.从高度的时间表TT.这将创建一个新的高数组变量,其基础数据类型为double。

一个= TT。一个rrDelay
A = M×1高双柱向量8 8 2113 4 59 3 11:

针对者isaundering函数可用于确定高阵列的基础数据类型。

延期评估

高大阵列的一个重要方面是,随着您的工作,大多数操作都不立即执行。这些操作似乎快速执行,因为实际计算被延迟,直到您特别请求执行计算。您可以触发评估高大的数组收集函数(将结果存入内存)或函数(将结果写入磁盘)。这种延迟计算很重要,因为即使是像这样的简单命令大小(X)在一个有十亿行的高数组上执行不是一个快速的计算。

当你使用高数组时,MATLAB会跟踪所有要执行的操作。属性请求输出时,将使用该信息优化数据的传递次数收集功能。因此,使用未评估的高阵列和仅当您需要时,它是正常的。有关更多信息,请参阅高数组的递延求值

计算到达延迟的平均值和标准偏差。使用这些值来构造延迟的上阈值和较低阈值,该延迟在平均值的一个标准偏差范围内。请注意,每个操作的结果表明尚未计算阵列。

m =均值(a,“omitnan”
M =高双?预览延期。学习更多的知识。
s =性病(,“omitnan”
S =高?预览延期。学习更多的知识。
One_sigma_bounds = [m-s m m+s]
one_sigma_bounds = m×n×...高阵列?还是还是......?还是还是......?还是还是...... ::::::::::deveiked。 Learn more.

评估与收集

延迟评估的好处是,当用MATLAB执行计算时,通常可以以这样一种方式组合操作,使通过数据的次数最小化。因此,即使您执行许多操作,MATLAB也只在绝对必要时对数据进行额外的传递。

收集功能强制评估所有排队的操作并将结果输出带入内存中。出于这个原因,你可以想到收集作为高数组和内存数组之间的桥梁。例如,你不能控制如果或者使用高逻辑阵列循环,但一旦阵列进行了评估收集它成为可以在这些上下文中使用的内存逻辑阵列。

收集返回MATLAB的整个结果,您应该确保结果将适合内存。

使用收集计算one_sigma_bounds.并将结果带入内存中。在这种情况下,one_sigma_bounds.需要几个操作来计算,但MATLAB将操作组合到一个通过数据。由于此示例中的数据很小,收集快速执行。然而,随着数据的大小增加,通过数据的消除变得更有价值。

sig1 =收集(one_sigma_bounds)
使用本地MATLAB会话评估高表达: - 通过1:1:在1.5秒评估中完成的1.8秒SIG1 = -23.4572 7.1201 37.6975

您可以指定多个输入和输出收集如果你想一次计算几个高的数组。这种技术比调用更快收集很多次了。例如,计算最小和最大到达延迟。单独计算时,每个值需要通过一次数据来计算总共两次通过。然而,同时计算两个值只需要对数据进行一次遍历。

[max_delay,min_delay] =收集(max(a),min(a))
在1.1秒内完成的评估max_delay = 1014 min_delay = -64

这些结果表明,大多数航班平均晚点7分钟左右。但一架航班迟到至多37分钟或提前至多23分钟,都在一个标准偏差之内。数据库里最快的航班提前了大约一个小时到达,而最近的航班延误了好几个小时。

保存,加载和检查点高阵列

节省函数保存状态一个高的阵列,但不复制任何数据。所结果的.mat文件通常很小。但是,原始数据文件必须在同一位置可用,以便随后使用加载

功能使数据副本并将副本保存为文件集合,可以消耗大量的磁盘空间。在高阵列上执行所有挂起的操作以在写入之前计算值。一次复制数据,它是独立于原始原始数据的。因此,即使原始原始数据不再可用,也可以从写入的文件重新创建tall数组。

您可以通过创建指向写入文件的位置的新数据存储来重复从书面文件中重新创建高阵列。此功能使您可以创建检查站或者快照高阵列数据。创建检查点是保存预处理数据的结果的好方法,以便数据处于更有效的效率。

如果你有一个高数组助教,则可将其写入文件夹地点使用命令:

写(位置,TA);

后来,重建助教从已写的文件,使用命令:

ds =数据存储(位置);TA =高(ds);

此外,您可以使用函数触发对高数组的求值并将结果写入磁盘。这个用的类似于收集然而,不会将任何结果带到内存中。

金宝app支持功能

大多数核心功能与高阵列相同的方式与内存阵列一样。但是,在某些情况下,函数与高阵列合作的方式是特殊的或有局限性的。您可以判断函数是否支持高阵列,如果有任何限制,请查看参考页面的函金宝app数中的函数扩展能力章节(有关示例,请参阅Fillutiers.)。

有关所有支持高数组的MATLAB函数的过滤列表,请参见金宝app功能列表(高阵列)

高阵列也由多个工具箱支持,使您可以执行写入金宝app机器学习算法,部署独立应用程序,并在群集中运行计算。有关更多信息,请参阅用其他产品延伸高阵列下载188bet金宝搏

另请参阅

||||

相关话题