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

标签 arrays julia

假设我有一个大小为 1024x1024x1x1x100 的 5D 数组。如何制作一个 1024x1024x100 的新数组?

如果您提前知道要保留哪些维度,则可以使用以下方法:

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

但是我提前不知道哪些尺寸是多少并且我只想保留给定 bool 掩码的尺寸;像这样的东西...

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

最佳答案

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

Base.squeeze — Function.

squeeze(A, dims)

Remove the dimensions specified by dims from array A. Elements of dims must be unique and within the range 1:ndims(A). size(A,i) must equal 1 for all i in dims.

为了“压缩”所有大小为 1 的维度(当它们事先未知时),我们需要找到它们并将它们放入元组中。这是通过 ((size(arr).==1)...) 完成的。所以结果是:

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

关于arrays - 删除长度为 1 的 Julia 数组维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46289554/

相关文章:

javascript - 在对数组执行 "double iteration"的同时对每个项目执行异步操作

julia - 使用广播将非无理值分配给无理数组的问题。=

c++ - 添加函数数组并随机选择其中一个

无法找出 C 中的指针/数组/字符串

julia - NLopt 算法符号及其在 Julia 中的使用

julia - 在 julia : integration_qawc 中使用 GSL.jl 集成例程

package - Julia:如何更新到最新版本的软件包(即 Flux)

dataframe - 如何根据 Julia 中的其他列值有条件地在数据框中创建新列

python - 从文本文件读入 python 列表

java - 基于变量而不是常量定义一维数组的元素数量