5
我想弄清楚(在朱莉婭)如何提取指定的維度,當維度本身是一個變量的數組的一部分。如果維數已知,則可以直接提取數組的一部分。Julia:如何提取指定維度的數組的一部分
A = rand(27,33,11)
A_portion = A[:,:,3:7]
是否有用於沿可變尺寸提取陣列的一部分的緊湊/有效的方法:例如,我可以通過執行這樣的提取沿第三維度的部分?例如,看起來像這樣的東西?
A = rand(27,33,11)
dim = 3 ## dimension along which to grab a portion of the array
first_element = 3 ## first element over specified dimension
last_element = 7 ## last element over specified dimension
A_portion = MyFunction(A,dim,first_sample,last_sample)
一種可能性是寫一組if語句爲數組維度的每個可能的組合(最多尺寸的某一最大數目),沿着該提取部分和尺寸。例如,如下所示:
MyFunction(A::Array,dim::Int,first_element::Int,last_element::Int)
if ndims(A)==1 && dim==1
return A[first_element:last_element]
elseif ndims(A)==2 && dim==1
return A[first_element:last_element,:]
elseif ndims(A)==2 && dim==2
return A[:,first_element:last_element]
elseif ndims(A)==3 && dim==1
...
...
...
顯然,爲了允許具有大量維數的數組,這變得相當混亂。有沒有更緊湊/高效的方法來做到這一點?
非常好。它看起來甚至可以指定一系列索引:'A_portion = slicedim(A,dim,first_element:last_element)' – Landon