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

Python 在多维数组中选择单个维度(可以变化)中的数据,python,arrays,indexing,selection,Python,Arrays,Indexing,Selection,假设我有一个形状为80,80,17,5,27的多维数组,其中27条切片轴可以是第三维、第四维或第五维 我想选择切片轴内的数据子集;例如: slice_axis = N.shape(data).index(27) # slice_axis=4 for data listed above data_new = data[:,:,:,:,0:tot_slices/2] # where this selection location depends on the slice axis 或者,如果数据形

假设我有一个形状为80,80,17,5,27的多维数组,其中27条切片轴可以是第三维、第四维或第五维

我想选择切片轴内的数据子集;例如:

slice_axis = N.shape(data).index(27) # slice_axis=4 for data listed above
data_new = data[:,:,:,:,0:tot_slices/2] # where this selection location depends on the slice axis
或者,如果数据形状如下所示:80,80,27,17,5: 然后slice_axis=2,data_new=data[:,:,0:tot_slice/2,:,:]


有没有一种快速的方法可以做到这一点,最好是不必转换数据?

如果我正确理解了您的问题,以下方法应该可以:

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)

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

selected_axis = N.shape(data).index(27) 

# delete 1 dynamic to create an even split of the data (because 27 is an odd number)
data = N.delete(data,N.ceil(27/2), axis=selected_axis) 
        
(data_base,data_activation) = N.split(data,2,axis=selected_axis)

等待什么您所说的选择位置取决于切片索引是什么意思。选择什么位置?您希望实现的新数据示例是什么?我在示例中选择了数据数组第五维中的一部分数据;第五个维度对应于上面一行的兴趣切片指数。我仍然不清楚。您可能希望单击“编辑”,然后编辑您的问题。如果你举个例子,那会很有帮助的。你能举例说明你的代码和你想做什么吗?用注释或psedo代码填充你不知道的行吗?如果第五维是27长,你需要数据[:,:,:,:,0:tot_切片/2],或者如果第四维是27长,你需要数据[:,:,:,:,0:tot_切片/2,:]等等?是的,mdurant,这正是我要问的。我重新编辑了这个问题,使它更清楚一点。是的,这正是我想要的,尽管我还没有完全理解它。我还将发布我在下面提出的解决方案。基本上,普通方括号表示法映射到_ugetItem _uu,每个部分都成为一个切片对象。这是手动执行该过程。