主要内容

索引和查看高数组元素

高数组太大,无法装入内存,因此通常查看数据的子集,而不是整个数组。本页展示了提取和查看高数组部分的技术。

提取数组的顶部行

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

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

提取数组的底部行

类似地,您可以使用尾巴函数提取高数组中的底行。

T_tail = gather(tail(tt))
t_tail = 8×3表Var1 Var2 Var3 ________ ________ ________ 0.0.64776 0.47349 -0.27077 -0.31763 1.3656 - 1.3656 -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

索引高数组

所有tall数组都支持圆括号索引金宝app。当使用括号为高数组建立索引时,例如T(一个)T (A, B),结果是一个新的高数组,只包含指定的行和列(或变量)。

与高数组上的大多数其他操作一样,索引表达式不会立即求值。你必须使用收集计算索引操作。有关更多信息,请参见高数组的延迟计算

你可以在一个高数组的第一个维度中执行这些类型的索引:

  • B = a(:,…),在那里中的所有行一个

  • B = A(idx,…),在那里idx是高数值列向量或非高数值向量。

  • B = a (l,…),在那里l高数组或非高逻辑数组的高度是否相同一个.例如,您可以使用关系运算符,例如tt (tt。Var1< 10,:).当使用高逻辑数组索引高数组时,有几个要求。每个tall数组:

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

    • 必须从单个高数组派生。

    • 第一个维度的索引肯定是一样的。

  • B = a (p: d: q,…B = a (p: q,…,在那里P: D: Q而且P:是有效的结肠索引表达式。

此外,你必须指定下标的数量取决于数组有多少个维度:

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

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

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

提示

找到函数在高列向量中定位非零元素,并可用于为满足特定条件的元素生成索引向量。例如,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(录得5个:结束,“Var1”
ans = 6×1高表Var1 ________ 1.769 1.5106 0.16401 -0.28276 1.1522 -1.1465

从高表中每100行检索一次。

tt (1:10 0:,)
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::::::

提取高表变量

高表或高时间表中的变量都是不同底层数据类型的高数组。表和时间表的标准索引方法也适用于高表和高时间表,包括的使用timerangewithtol,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…],每个tall数组必须从单个tall数组派生,并且在第一个维度中不能有不同的索引。索引操作包括如下函数vertcatsplitapply排序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::::

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

文件= {“文件夹/道路/ / file1”“文件夹/道路/ / file2”};Ds =数据存储(文件);

使用高数组进行赋值和删除

无论使用索引从高数组中赋值还是删除元素,都适用相同的下标规则。删除是通过将一个或多个元素赋值给空矩阵来完成的,[]

()“分配。

可以使用通用语法将元素分配到高数组中A(m,n,…)= B.高大的阵列一个必须存在并且具有非空的第二个维度。第一个下标一定是冒号吗或者一个高大的逻辑向量。有了这个语法,B可以是:

  • 标量

  • 派生的高数组(m,…)在哪里与上面相同的下标。例如,(m, 1:10)

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

“。”赋值

用于使用语法的表索引A.Var1 = B,数组B必须是具有适当行数的高数组。通常情况下,B派生自高表中的现有数据。Var1可以是高表中的新变量,也可以是现有变量。

不能将高数组分配为常规表中的变量,即使该表为空。

按排序顺序提取指定行数

对高数组中的所有数据进行排序可能是一项昂贵的计算。大多数情况下,只需要一个高数组开头或结尾的行子集来回答诸如“按年份计算,此数据中的第一行是什么?”

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

T_top12 = gather(topkrows(tt,12,2))
使用本地MATLAB会话计算tall表达式:在0.067秒内完成的计算t_top12 = 12×3表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

高数组内容总结

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

例如,为对象创建一个高表outages.csv数据集并显示汇总信息。此数据集包含数值、日期时间和分类变量。

FMTS = {“% C”' % D '' % f '' % f '' % D '“% C”};ds = tabularTextDatastore(“outages.csv”“TextscanFormats”fmt);T =高(ds);总结(T)
使用本地MATLAB会话评估tall表达式:-通过1 of 2:完成在0.16秒-通过2 of 2:完成在0.19秒评估完成在0.46秒变量:地区:1,468×1分类值:中西部142东北557东南389西南26西354 OutageTime: 1,468×1 datetime值:Min 2002-02-01 12:18 Max 2014-01-15 02:41损失:1,468×1 double值:Min 0 Max 23418 NumMissing 604客户:1,468×1 double值:Min 0 Max 5.9689e+06 NumMissing 328 RestorationTime: 1,468×1 datetime参数值:Min 2002-02-07 16:50 Max 204209-18 23:31 NumMissing 29原因:1,468×1分类参数:攻击294地震2能源紧急188设备故障156火灾25强风暴338雷暴201未知24风95冬季风暴145

返回计算结果的子集

本页上的许多示例使用收集求表达式的值并将结果存储到内存中。但是,在这些示例中,结果是否适合内存也不重要,因为一次只索引了几行。

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

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

另请参阅

|||||

相关的话题