内存不足数据的高阵列

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

什么是一个高大的阵列?

由于数据不是一次全部加载到内存中,所以高数组在第一维中可以任意大(也就是说,它们可以有任意数量的行)。与使用MapReduce等技术编写考虑到巨大数据量的特殊代码不同,使用高数组可以直观地处理大型数据集,这与使用内存中的MATLAB类似®阵列。许多核心运算符和功能与高阵列相同,因为它们与内存阵列进行。matlab一次使用数据的小块,处理背景中的所有数据分集和处理,使常见表达式(如A + B,使用大数据集。

高大阵列的好处

与内存中的数组不同,在您请求使用收集功能。这延迟评价允许您使用大数据集快速工作。当您最终请求输出时收集,MATLAB在可能的情况下结合排队计算,并采用通过数据的最小次数。通过数据的次数会极大地影响执行时间,因此建议仅在必要时请求输出。

笔记

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

创建高大表

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

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

ds = tabulartextdataStore(“airlinesmall.csv”);ds。TreatAsMissing =“不”;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”南南南南南  : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :

显示屏指示行数,m,目前未知。MATLAB显示一些行,以及垂直椭圆指示高表格中存在更多当前未显示的行。

创建高时的时间表

如果正在处理的数据与每一行数据都有关联的时间,则可以使用高时间表处理数据。有关创建高时间表的信息,请参见扩展功能(时间表

这里指的是高桌子TT.具有与每行关联的时间,但它们被分解为多个表变量,例如月日,等等。将所有这些datetime信息合并到一个新的tall datetime变量中日期,这是基于出发时间Deptime..然后,使用较高的时间表使用日期作为行时间。自从日期表中唯一的datetime变量是table2timesable.函数自动将其用于行次数。

小时= (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..这将创建一个具有底层数据类型的新的高阵列变量。

一个= TT。一种rrDelay
a = M×1 tall双列向量8 8 21 13 4 59 3 11::

类基础伊莎贝拉函数用于确定高数组的底层数据类型。

延期评估

高数组的一个重要方面是,当您使用它们时,大多数操作不会立即执行。这些操作看起来执行得很快,因为实际的计算被延迟,直到您明确要求执行计算。属性可以触发高数组的求值收集功能(将结果带入内存)或函数(将结果写入磁盘)。这种延迟的评估很重要,因为即使是一个简单的命令尺寸(x)在一个高大的阵列上执行,十亿行不是快速计算。

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

计算到达延迟的平均值和标准偏差。使用这些值来构造在一个标准差范围内的延迟的上限和下限阈值。注意,每个操作的结果表明还没有计算数组。

m =意味着(,'omitnan'
m =高大的双倍?预览延期。了解更多。
s = std(a,'omitnan'
S =高?预览延期。了解更多。
One_sigma_bounds = [m-s m m + s]
one_sigma_bounds = M×N×……高大的数组???...???...? ? ? ... : : : : : : Preview deferred. Learn more.

评估收集

延迟评估的好处是,当Matlab执行计算时的时间来,通常可以将操作组合成使得通过数据的数量最小化。因此,即使您执行许多操作,MATLAB也只能在绝对必要时通过数据进行额外通过。

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

自从收集在MATLAB中返回整个结果,您应该确保结果适合内存。

使用收集计算一西格玛界并将结果存入内存。在这种情况下,,一西格玛界需要进行多个运算来计算,但MATLAB将这些运算合并为一次数据传递。由于本例中的数据较小,收集执行速度很快。但是,随着数据大小的增加,消除通过数据的传递变得更有价值。

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

可以将多个输入和输出指定给收集如果您想立即评估几个高阵列。这种技术比呼叫更快收集多次。例如,计算最小和最大到达延迟。单独计算,每个值需要通过数据来计算总共两个通过。但是,计算两个值同时只需要一个通过数据。

[最大延迟,最小延迟]=聚集(最大(a),最小(a))
使用本地MATLAB会话评估高表达: - 通过1/1:1:在1.1秒评估中完成,在1.1秒max_delay = 1014 min_delay = -64

这些结果表明,平均而言,大多数航班迟到大约7分钟。但它在一个标准偏差范围内,飞行最多37分钟或早期23分钟。数据集中的最快飞行提前大约一小时,最新的航班很长时间延迟。

保存、加载和检查高阵列

拯救功能拯救了状态但不复制任何数据。由此产生的。垫文件通常很小。但是,原始数据文件必须在同一位置可用,以便以后使用负载

函数生成数据的副本并将副本保存为文件集合,这会占用大量磁盘空间。在写入之前,对tall数组执行所有挂起的操作以计算值。一旦复制数据,它与原始原始数据无关。因此,即使原始原始数据不再可用,您也可以从书面文件中重新创建高大数组。

通过创建指向写入文件位置的新数据存储,可以从写入的文件重新创建tall数组。此功能允许您创建检查站快照高数组数据的存储。创建检查点是保存数据预处理结果的一种好方法,这样数据就可以以更高效的形式加载。

如果你有一个高大的数组TA.,则可将其写入文件夹位置使用命令:

写入(位置,TA);

后来,重建TA.从书面文件中,使用命令:

DS =数据存储(位置);ta =高(DS);

此外,您可以使用触发高阵列的评估并将结果写入磁盘的功能。这种使用类似于收集, 然而,不会将任何结果带入内存。

金宝app支持功能

大多数核心函数处理高数组的方式与处理内存中数组的方式相同。然而,在某些情况下,函数使用高数组的方式是特殊的或有局限性的。控件中的函数参考页的底部,可以判断函数是否支持高数组,以及它是否金宝app有任何限制扩展能力部分(例如,查看填充异常值).

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

Tall阵列还受多个工具箱的支持,使您能够金宝app编写机器学习算法、部署独立应用程序以及并行或在集群上运行计算。有关详细信息,请参阅使用其他产品扩展高阵列下载188bet金宝搏

也可以看看

||||

相关的话题