主要内容

索引和查看高大数组元素

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

提取数组的顶部行

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

tt =高(表(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 =收集(头(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

高索引数组

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

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

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

  • B =(:,…),在那里选择一个

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

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

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

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

    • 必须在第一个维度中没有不同的索引。

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

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

  • 对于高列向量,可以指定单个下标,例如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(录得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.9899 -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 tall双列向量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…],每个高数组必须派生于一个高数组,并且在第一维中索引必须相同。索引操作包括如下函数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 =数据存储(文件);

高数组的赋值和删除

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

“()”任务

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

  • 标量

  • 推导出的高数组(m,…)在哪里下标和上面一样。例如,(m, 1:10)

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

“。”赋值

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

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

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

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

topkrows函数返回为此目的而按排序的指定行数。例如,使用topkrows提取按第二列降序排列的前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数据集和显示摘要信息。此数据集包含数值、日期时间和类别变量。

fmt = {“% C”' % D '' % f '' % f '' % D '“% C”};ds = tabularTextDatastore (“outages.csv”“TextscanFormats”fmt);T =高(ds);总结(T)
使用本地MATLAB会话评估tall表达式:-通过2的第1步:在0.16秒完成-通过2的第2步:在0.19秒完成评估,在0.46秒完成变量:Region: 1,468×1 categoryvalues: MidWest 142 NorthEast 557 SouthEast 389 SouthWest 26 West 354 OutageTime: 1,468×1 datetime Values:Min 2002-02-01 12:18 Max 2014-01-15 02:41 Loss: 1,468×1 double Values: Min 0 Max 23418 NumMissing 604 Customers: 1,468×1 double Values: Min 0 Max 5.9689e+06 NumMissing 328 RestorationTime: 1,468×1 datetime Values: Min 2002-02-07 16:50 Max 2042-09-18 23:31 NumMissing 29原因:1,468×1 categoryvalues:攻击294地震2能源紧急188设备故障156火灾25强烈风暴338雷暴201未知24大风95冬季风暴145

返回计算结果子集

这个页面上的许多例子都使用了收集计算表达式并将结果存入内存。然而,在这些示例中,结果是否适合内存也是很简单的,因为一次只对少数行进行索引。

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

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

另请参阅

|||||

相关的话题