在多维数组中选择单个维度(可以变化)的数据

时间:2014-09-12 21:27:04

标签: python arrays indexing selection

假设我有一个多维的形状数组(80,80,17,5,27),其中27(切片轴)可以在第三,第四或第五维度。

我想在切片轴内选择一个数据子集;举个例子:

slice_axis = N.shape(data).index(27)#slice_axis = 4,用于上面列出的数据 data_new = data [:,:,:,:,0:tot_slices / 2]#此选择位置取决于切片轴

或者,如果数据形状如下所示:(80,80,27,17,5): 然后slice_axis = 2和data_new = data [:,:,0:tot_slices / 2,:,:]

有没有快速的方法来做到这一点,最好不必转置数据?

2 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,以下内容应该有效:

slice_idx = N.shape(data).index(27)
slices = [ slice( 0, None, None),]*4
slices.insert( slice_idx, slice( 0, tot_slices/2, None))
data_new = data.__getitem__(slices)

答案 1 :(得分:0)

我在mdurant回答之前提出的解决方案如下:

selected_axis = N.shape(数据).index(27)

删除1动态以创建数据的偶数分割(因为27是奇数)

data = N.delete(数据,N.ceil(27/2),轴= selected_axis)

(data_base,data_activation)= N.split(数据,2,轴= selected_axis)