主要内容

索引和查看阵列元素

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

提取数组的顶行

使用函数提取高数组中的第一行。不强制对数组求值,因此必须使用聚集查看结果。

tt =高(表(randn (1000 1), randn (1000 1), randn (1000,1)))
tt=1000×3高台Var1 Var2 Var3uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu0.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.35734-0.338:0.623:0.338-0.623:0:0.623:0:0
t_头=聚集(头(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 =收集(尾(tt))
t_tail = 8×3 table Var1 Var2 Var3 ________ ________ ________ 0.64776 0.47349 -0.27077 -0.31763 1.3656 0.43966 1.769 -1.6378 - 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

高索引数组

所有高数组都支持括号索引。使用括万博1manbetx号索引高数组时,例如T(A)T(A,B),结果是一个新的高数组,只包含指定的行和列(或变量)。

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

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

  • B=A(:,…),在那里:选择中的所有行A.

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

  • B=A(L,…),在那里L是与相同高度的高逻辑数组还是非高逻辑数组A..例如,可以使用关系操作符,例如tt(tt.Var1<10,:). 当您使用高逻辑数组索引高数组时,有几个要求。每个高阵列:

    • 在第一个维度中必须是相同的大小。

    • 必须从一个高数组中推导出来。

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

  • B=A(P:D:Q,…)B=A(P:Q,…),在那里P: D: QP:Q是有效的结肠索引表达式。

另外,必须指定的下标数取决于数组的维度:

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

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

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

提示

这个发现函数在高列向量中定位非零元素,并可用于为满足特定条件的元素生成索引向量。例如,k=查找(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(end-5:end,“Var1”)
ans=6×1高台Var1 _____;1.769 1.5106 0.16401-0.282761.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.9899 -0.079893 -1.6848 -0.91182 0.47586 -2.1746 1.1754 1.9085 -0.79383 0.18343::::::

提取高表变量

高表或高时间表中的变量都是不同底层数据类型的高数组。表和时间表的标准索引方法也适用于高表和高时间表,包括使用时间范围,维斯托尔vartype

例如,使用点表示法索引一个高表T.VariableName将数据的单个变量作为一个高数组检索。

tt.Var1
Ans = 1,000×1 tall双列向量0.5377 1.8339 -2.2588 0.8622 0.3188 -1.3077 -0.4336 0.3426:

如果您记不起精确的变量名,请使用制表符完成来查找表中的变量。例如,键入tt。然后按选项卡.弹出一个菜单:

您还可以执行多级索引。例如,提取变量中的前5个元素Var2.在这种情况下,必须使用括号中高数组所支持的索引形式之一。万博1manbetx

tt.Var2 (1:5)
Ans = 5×1高双列向量0.6737 -0.6691 -0.4003 -0.6718 0.5756

看见表格访问数据在时间表中选择时间有关更多索引信息,请参阅。

用高数组连接

为了连接两个或多个高数组,如[A1 A2 A3…],每个高数组必须从单个高数组派生,并且在第一维度中不得以不同方式索引。索引操作包括以下函数:维特卡特,splitapply,分类,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=数据存储(文件);

高数组的赋值和删除

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

“()”任务

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

  • 标量

  • 源于A(m,…)哪里M与上面的下标相同。例如,(m, 1:10)

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

““转让”

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

即使表是空的,也不能将高数组赋值为普通表中的变量。

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

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

这个托普克罗斯函数返回为此目的按排序顺序的指定行数。例如,使用托普克罗斯提取按第二列降序排列的前12行。

t_top12=聚集(topkrows(tt,12,2))
评估高表达式使用本地MATLAB会话:在0.067 sec t_top12 = 12×3 table 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.261130.72689 2.5383 -0.57588

总结Tall Array内容

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

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

fmts={“%C”“%D”“%f”“%f”“%D”“%C”}; ds=表格数据存储(“中断.csv”,“TextscanFormats”fmt);T =高(ds);总结(T)
使用本地MATLAB课程评估Toll表达式:-第1次,共2次:在0.16秒内完成-第2次,共2次:在0.19秒内完成评估,在0.46秒内完成变量:区域:1468×1分类值:中西部142东北557东南389西南26西354 OutageTime:1468×1日期时间值:Min 2002-02-01 12:18最大2014-01-1502:41损失:1468×1双倍值:最小0最大23418 Numming 604客户:1468×1双倍值:最小0最大5.9689e+06 Numming 328恢复时间:1468×1日期时间值:最小2002-02-07 16:50最大2042-09-18 23:31 Numming 29原因:1468×1分类值:攻击294地震2能源紧急188设备故障156火灾25 se维尔风暴338雷暴201未知24风95冬季风暴145

返回计算结果的子集

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

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

如果确定计算结果不适合内存,请使用以评估高阵列并将结果写入磁盘。

另见

|||||

相关话题