Python如何沿给定轴寻址数组?

2024-03-28 08:33:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python脚本,它从3D数组中读取切片,如下所示:

def get_from_array(axis, start, end, array):
    if axis == 0:
        slice = array[start:end, :, :]
    elif axis == 1:
        slice = array[:, start:end, :]
    elif axis == 2:
        slice = array[:, :, start:end]
    return slice

我忍不住想一定有更好的办法!有什么建议吗?你知道吗

S码


Tags: from脚本getreturnifdef切片slice
2条回答

也可以使用np.take。这样你就可以更自然地在一行中完成。你知道吗

a.take(np.arange(start,end), axis=axis)

注意事项:

  • 它不接受标准的:切片表示法,而是用range替换它
  • 它返回一个副本,而不是视图

例如:

In [135]: a = np.arange(3*3*3).reshape(3,3,3)

In [136]: a.take(np.arange(1,2), axis=1)
Out[136]: 
array([[[ 3,  4,  5]],

       [[12, 13, 14]],

       [[21, 22, 23]]])

你可以这样做:

idx = [slice(None)] * array.ndim
idx[axis] = slice(start, end)
myslice = array[tuple(idx)]

相关问题 更多 >