高阵列太大而无法适合内存,因此常常查看数据的子集而不是整个数组。此页面显示了提取和查看高阵列的部分的技术。
使用头
函数提取高数组中的第一行。头
不强制求值的数组,所以必须使用收集
查看结果。
tt = tall(表(Randn(Randn(1000,1),Randn(1000,1),Randn(1000,1)))
TT = 1000×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 = Var1 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))
评估使用本地MATLAB会话高表达:评价0秒t_tail完成= 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
所有高阵列都支持括号索引。万博1manbetx当您使用括号索引高阵列时,例如T(一个)
或标签)
,结果是仅包含指定的行和列(或变量)的新高阵列。与高大阵列上的大多数其他操作一样,不立即评估索引表达式。你必须使用收集
评估索引操作。有关更多信息,请参阅高阵列的延迟评估.
您可以在高阵列的第一维中执行这些类型的索引:
B =(:,…)
, 在哪里:
选择一种
.
b = a(idx,......)
, 在哪里idx.
是高数值列向量或非高数值列向量。
b = a(l,...)
, 在哪里L.
是一个高度高的高度的高度或非高度的逻辑阵列一种
.例如,您可以使用关系运算符,例如tt(tt.var1 <10,:)
.
B = (P: D: Q,…)
或b = a(p:q,......)
, 在哪里P:D:Q
和P:
是有效的冒号
索引表达式。
此外,您必须指定的下标数取决于数组有多少维度:
对于高列向量,可以指定单个下标,例如T(1:10)
.
对于高大的行向量,高表和高时的时间表,您必须指定两个下标。
对于具有两个或多个维度的高大阵列,您必须指定两个或更多下标。例如,如果数组有三个维度,则可以使用诸如TA(1:10,:,:)
或TA(1:10,:)
,但不是线性索引表达式,如TA(1:10)
或ta(:)
.
这找到
函数在高列向量中定位非零元素,并可用于为满足特定条件的元素生成索引向量。例如,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
从高层桌子上检索每一次。
TT(1:100:结束,:)
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::::::
高表或高度时间表中的变量是不同底层数据类型的高阵列。表格和时刻表的标准索引方法也适用于高表和高时的时间表。
例如,使用点表示法索引一个高表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
.在这种情况下,您必须使用括号中的高阵列的支持形式的索引之一。万博1manbetx
tt.var2(1:5)
ans = 5×1高双柱向量0.6737 -0.6691 -0.4003 -0.6718 0.5756
看访问表中的数据或按行时间和变量类型选择时间表数据有关更多索引信息。
为了连接两个或更多个高大的阵列,如[a1 a2 a3…]
,每个高阵列必须从单个高阵列中导出,并且在第一维度中不得以不同的方式索引。索引操作包括诸如vertcat
那分裂
那排序
那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 ::::::::::::0.3426 0.5530 :: ::
将高阵列与不同的底层数据存储组合,建议您使用写
将数组(或计算结果)写入磁盘,然后创建一个引用这些位置的新数据存储:
files = {'文件夹/路径/到/ file1'那'文件夹/路径/到/ file2'};DS =数据存储(文件);
相同的订户规则适用是否使用索引来分配或删除来自高级数组的元素。通过将一个或多个元素分配给空矩阵来完成删除,[]
.
您可以使用常规语法将元素分配为高阵列a(m,n,...)= b
.高大的阵列一种
必须存在。第一个下标M.
必须是冒号:
或一个高大的逻辑矢量。使用此语法,B.
可:
标量
一阵高大的阵列来自(m,…)
在哪里M.
是与上述相同的下标。例如,a(m,1:10)
.
空矩阵,[]
(删除)
对于使用语法的表索引A.Var1 = B.
,阵列B.
必须是具有适当行数的高阵列。通常,B.
是从高表中的现有数据中导出的。var1
可以是高表中的新变量或现有变量。
即使表为空,也无法将高阵列分配为常规表中的变量。
在高阵列中排序所有数据都可以是昂贵的计算。最常见的是,只需要高大阵列的开头或结尾处的行的子集是为了回答问题,如“逐年的第一行是什么?”
这topkrows
函数以此目的以排序顺序返回指定的行数。例如,使用topkrows
提取按第二列降序排列的前12行。
t_top12 =收集(topkrows(tt,12,2))
使用本地MATLAB会话评估-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
这概括
函数返回有关高表或时间表中的每个变量的有用信息,例如数字变量的最小值和最大值,以及分类变量的每个类别的出现次数。
例如,为此创建一个高大的桌子中断.CSV
数据集和显示摘要信息。此数据集包含数值、日期时间和类别变量。
fmt = {“% C”' % D '' % f '' % f '' % D '“% C”};ds =数据存储('outages.csv'那'textscanformats',fmts);t =高(DS);摘要(T)
使用本地Matlab会话评估高表达: - 通过1:0秒评估完成0秒变量:区域:1,468×1分类值:1,468×1分类价值:142东北部557东南389西南38.254 OutageTime:1,468×1 DateTime价值观:MIN 02 / 01/2002 12:18 MAX 01/15/2014 02:41损失:1,468×1双值:MIN 0 MAX 23417.7235 NANS 604客户:1,468×1双值:MIN 0 MAX 5968874.882 NANS 328 RESTORIONTITE:1,468×1日期时间值:Min 02 / 07/2002 16:50 Max 09/18/2042 23:31 NATS 29原因:1,468×1分类值:攻击294地震2能源紧急188设备故障156火灾25严重风暴338雷霆风暴201不知名的24风95冬季风暴145
此页面上的许多例子使用收集
计算表达式并将结果存入内存。然而,在这些示例中,结果是否适合内存也是很简单的,因为一次只对少数行进行索引。
如果您不确定表达式的结果是否适合内存,建议您使用聚集(头(x))
或收集(尾部(x))
.这些命令仍然会计算所有排队的计算,但只返回保证能放入内存的一小部分结果。
如果您确定计算的结果不适合内存,请使用写
计算tall数组并将结果写入磁盘。