删除长度为1的Julia数组维度

时间:2017-09-18 23:27:04

标签: arrays julia

假设我有一个尺寸为1024x1024x1x1x100的5D阵列。如何制作1024x1024x100的新阵列?

如果您知道要提前保留哪些尺寸,则以下情况有效:

arr = arr[:, :, 1, 1, :]

但是我不知道哪个尺寸是提前的尺寸,我想只保留给定布尔蒙版的尺寸;像这样......

arr2 = arr[(size(arr) .> 1)]

1 个答案:

答案 0 :(得分:6)

squeeze函数是专门为了删除长度为1的尺寸而定义的。来自手册:

  

Base.squeeze - 功能。

     

squeeze(A, dims)

     

删除尺寸   由数组A中的dims指定.dims的元素必须是唯一的   在1:ndims(A)范围内。对于size(A,i)中的所有idims必须等于1。

To"挤压"大小为1的所有维度(当它们事先未知时),我们需要找到它们并将它们变成元组。这是由((size(arr).==1)...)完成的。结果是:

squeeze(a,(find(size(a).==1)...))