假设我有一个尺寸为1024x1024x1x1x100的5D阵列。如何制作1024x1024x100的新阵列?
如果您知道要提前保留哪些尺寸,则以下情况有效:
arr = arr[:, :, 1, 1, :]
但是我不知道哪个尺寸是提前的尺寸,我想只保留给定布尔蒙版的尺寸;像这样......
arr2 = arr[(size(arr) .> 1)]
答案 0 :(得分:6)
squeeze
函数是专门为了删除长度为1的尺寸而定义的。来自手册:
Base.squeeze - 功能。
squeeze(A, dims)
删除尺寸 由数组A中的dims指定.dims的元素必须是唯一的 在
1:ndims(A)
范围内。对于size(A,i)
中的所有i
,dims
必须等于1。
To"挤压"大小为1的所有维度(当它们事先未知时),我们需要找到它们并将它们变成元组。这是由((size(arr).==1)...)
完成的。结果是:
squeeze(a,(find(size(a).==1)...))