高数组太大,无法放入内存,因此通常查看数据的子集而不是整个数组。本页显示提取和查看高数组部分的技术。
使用头
函数提取高数组中的第一行。头
不强制对数组求值,因此必须使用聚集
查看结果。
tt =高(表(randn (1000 1), randn (1000 1), randn (1000,1)))
tt=1000×3高台Var1 Var2 Var3uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu0.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: Q
和P: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
这个总结
函数返回关于高表或时间表中每个变量的有用信息,例如数值变量的最小值和最大值,以及分类变量的每个类别的出现次数。
例如,为对象创建一个高桌子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))
。这些命令仍然评估所有排队计算,但只返回保证适合内存的少量结果。
如果确定计算结果不适合内存,请使用写
以评估高阵列并将结果写入磁盘。