主要内容

索引和查看高数组元素

高阵列太大而无法适合内存,因此常常查看数据的子集而不是整个数组。此页面显示了提取和查看高阵列的部分的技术。

提取阵列的顶部行

使用函数提取高数组中的第一行。不强制求值的数组,所以必须使用收集查看结果。

tt = tall(表(Randn(Randn(1000,1),Randn(1000,1),Randn(1000,1)))))
TT = 1000×3高大表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 =聚集(头(tt))
t_head = 8×3表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_tail =聚集(尾部(tt))
t_tail = 8×3表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

索引高阵列

所有高阵列都支持括号索引。金宝app当您使用括号索引高大的数组时,例如T(一个)标签),结果是一个新的高阵列,仅包含指定的行和列(或变量)。

与对高数组的大多数其他操作一样,索引表达式不会立即求值。你必须使用收集评估索引操作。有关更多信息,请参阅高阵列的延期评估

您可以在高阵列的第一个维度中执行这些类型的索引:

  • B =(:,…), 在哪里选择所有行一种

  • b = a(idx,......), 在哪里idx.是一个高数值列向量或非高数值向量。

  • b = a(l,...), 在哪里L.是一个高高的高度的高大或不高的逻辑阵列一种.例如,您可以使用关系运算符,例如tt(tt.var1 <10,:).当您使用高逻辑阵列索引高大的数组时,有一些要求。每个高阵列:

    • 必须在第一维中具有相同的尺寸。

    • 必须从单个高阵列中派生。

    • 在第一维度中不得以不同的方式索引。

  • B = (P: D: Q,…)b = a(p:q,......), 在哪里P:D:QP:有效冒号索引表达式。

此外,您必须指定的下标数取决于阵列具有多少维度:

  • 对于高列向量,可以指定单个下标,例如T(1:10)

  • 对于高大的行向量,高表和高时的时间表,您必须指定两个下标。

  • 对于具有两个或多个维度的高阵列,您必须指定两个或更多下标。例如,如果数组有三个维度,则可以使用诸如TA(1:10,:,:)TA(1:10,:),但不是线性索引表达式,如TA(1:10)ta(:)

小费

找到函数在高列向量中定位非零元素,对于生成满足特定条件的元素的索引向量非常有用。例如,k =查找(x <0)返回所有负元素的线性索引X

例如,使用括号索引来检索前十行TT.

tt (1:10,:)
ANS = 10×3高表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(录得5个:结束,'var1'
ans = 6×1 tall table Var1 ________ 1.769 1.5106 0.16401 -0.28276 1.1522 -1.1465

从高层桌子检索每一次。

TT(1:100:结束,:)
ANS = 10×3高表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杜罗利,vartype.

例如,使用点表示法索引一个高表t.variablename.将单个数据作为高阵列检索单个数据。

tt.var1.
ANS = 1,000×1高级双柱向量0.5377 1.8339 -2.2588 0.8622 0.3188 -1.3077 -0.4336 0.3426 ::

如果您不能记住精确的变量名,可以使用制表补全来查找表中的变量。例如,类型tt。然后按标签.弹出一个菜单:

您还可以执行多个级别的索引。例如,提取变量中的前5个元素var2.在这种情况下,您必须使用括号中的高阵列的支持形式的索引之一。金宝app

tt.var2(1:5)
ans = 5×1高双柱向量0.6737 -0.6691 -0.4003 -0.6718 0.5756

在表中访问数据在时间表中选择时间有关更多索引信息。

高阵列的倾斜

为了连接两个或更多的高大阵列,如[a1 a2 a3…],每个高阵列必须从单个高阵列中导出,并且在第一维度中不得以不同的方式索引。索引操作包括诸如vertcat裂开排序Cell2mat同步调整时间, 等等。

例如,从中串联几列TT.创建一个新的高矩阵。

(tt。Var1 tt。Var2]
ANS = 1,000×2高级双矩阵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 :::::::::::::0.3426 0.5530:::::::

将高阵列与不同的底层数据存储组合,建议您使用要将数组(或计算结果)写入磁盘,然后创建一个引用这些位置的单个新数据存储:

files = {'文件夹/路径/到/ file1''文件夹/路径/到/ file2'};DS =数据存储(文件);

使用高阵列分配和删除

相同的订户规则适用是否使用索引来分配或删除来自高级数组的元素。通过将一个或多个元素分配给空矩阵来完成删除,[]

“( )“ 任务

您可以使用常规语法将元素分配为高阵列a(m,n,...)= b.高大的阵列一种必须存在并具有非空的第二维度。第一个下标m必须是冒号或一个高大的逻辑矢量。使用此语法,B.可:

  • 标量子

  • 一阵高大的阵列(m,…)在哪里m与上面是相同的下标。例如,a(m,1:10)

  • 一个空矩阵,[](删除)

“。”任务

对于使用语法的表索引A.Var1 = B.,阵列B.必须是具有适当行数的高阵列。通常,B.是从高表中的现有数据中派生出来的。var1可以是高表中的新变量或现有变量。

您不能将高阵列分配为常规表中的变量,即使表是空的。

按排序顺序提取指定的行数

对高阵列中的所有数据进行排序可能是昂贵的计算。最常见的是,只需要一个高阵列的开头或结尾的行的子集来回答问题,如“逐年的第一行是什么?”

topkrows为此目的,函数以排序顺序返回指定的行数。例如,使用topkrows提取按第二列降序排序的前12行。

t_top12 =收集(topkrows(tt,12,2))
使用本地MATLAB会话评估-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 0.92099 -0 0.92099 -0.47615 2.683 -0.26113 0.72689 2.5383 -0.57588

总结高阵列内容

概括函数返回有关高表或时间表中的每个变量的有用信息,例如数字变量的最小值和最大值,以及分类变量的每个类别的出现次数。

例如,为此创建一个高大的桌子中断.CSV数据集和显示摘要信息。此数据集包含数字变量、日期时间变量和类别变量。

fmt = {“% C”' % D '' % f '' % f '' % D '“% C”};ds = tabulartextdataStore('outages.csv''textscanformats',fmts);t =高(DS);摘要(T)
使用本地MATLAB会话评估高表达: - 通过第1条:0116秒 - 通行证2:0.19秒评估完成0.46秒的评估:区域:1,468×1个分类价值:1,468×1个分类价值:142东北部557东南389Southwest 26 West 354 OutageTime:1,468×1 Datetime值:Min 2002-02-01 12:18 Max 2014-01-15 02:41损失:1,468×1双值:Min 0 Max 23418 Nummissing 604客户:1,468×1双倍价值观:Min 0 Max 5.9689E + 06 Nummissing 328 Restiontime:1,468×1日期时间:Min 2002-02-07 16:50 Max 2042-09-18 23:31 Nummissing 29原因:1,468×1分类值:攻击294地震2能源紧急188设备故障156火灾25严重风暴338雷霆风暴201不知名24风95冬季风暴145

退回计算结果子集

此页面上的许多例子使用收集求表达式的值并将结果存入内存。然而,在这些示例中,结果适合内存也很简单,因为一次只索引几行。

在您不确定的情况下,如果表达式的结果适合内存,建议您使用聚集(头(x))聚拢(尾部(x)).这些命令仍然计算所有排队的计算,但是只返回一小部分保证适合内存的结果。

如果您确定计算的结果不适合内存,请使用计算高数组并将结果写入磁盘。

也可以看看

|||||

相关的话题