主要内容

索引和查看高数组元素

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

提取数组的顶部行

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

tt =高(表(randn (1000 1), randn (1000 1), randn (1000,1)))
tt = 1,000×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(一个)T (A, B),结果是一个新的高数组,只包含指定的行和列(或变量)。

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

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

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

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

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

    • 第一个维度的尺寸必须相同。

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

    • 一定是第一个维度的索引不同。

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

    • 头(tt, k)提供以下的快捷方式tt (1: k:)

    • 尾(tt, k)提供以下的快捷方式tt (end-k:,)

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

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

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

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

提示

找到函数定位高列向量中的非零元素,它可以用于为满足特定条件的元素生成索引向量。例如,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高表Var1 ________ 1.769 1.5106 0.16401 -0.28276 1.1522 -1.1465

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

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

提取高表变量

高程表或高程时间表中的变量都是不同底层数据类型的高程数组。标准的表和时间表索引方法也适用于高表和高时间表,包括使用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 =数据存储(文件);

使用高数组的赋值和删除

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

“()”任务

可以使用通用语法将元素分配到高数组中(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秒内完成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.27097 3.1585 0.50127 - 0.27095 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数据集并显示汇总信息。此数据集包含数值、日期时间和类别变量。

fmt = {“% C”' % D '' % f '' % f '' % D '“% C”};ds = tabularTextDatastore (“outages.csv”“TextscanFormats”fmt);T =高(ds);总结(T)
评估高表达式使用本地MATLAB会话:-通过1的2:完成在0.16秒-通过2的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 2042-09-18 23:31 NumMissing 29原因:1,468×1 categorical参数值:攻击294地震2能源紧急188设备故障156火灾25强风暴338雷暴201未知24风95冬季风暴145

返回计算结果的子集

本页上的许多例子都使用收集计算表达式并将结果存入内存。然而,在这些示例中,由于每次只有少数行被索引,因此将结果放入内存中也很简单。

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

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

另请参阅

|||||

相关的话题