【问题标题】:Preserving the dimensions of a slice from a Numpy 3d array从 Numpy 3d 数组中保留切片的尺寸
【发布时间】:2011-02-08 01:39:18
【问题描述】:

我有一个 3d 数组 a,形状为 a.shape = (10, 10, 10)

切片时,尺寸自动为squeezed,即

a[:,:,5].shape = (10, 10)

我想保留维度的数量但也要确保被挤压的维度是显示 1 的维度,即

a[:,:,5].shape = (10, 10, 1)

我曾想过重新转换数组并传递ndmin,但这只是将额外的维度添加到形状元组的开头,而不管切片来自数组a 中的哪个位置。

【问题讨论】:

    标签: python numpy slice


    【解决方案1】:
    a[:,:,[5]].shape
    # (10,10,1)
    

    a[:,:,5]basic slicing 的一个示例。

    a[:,:,[5]]integer array indexing 的一个例子——combined with basic slicing。使用整数数组索引时,结果形状始终为"identical to the (broadcast) indexing array shapes"。由于[5](作为一个数组)的形状为(1,)a[:,:,[5]] 最终具有 (10,10,1) 的形状。

    【讨论】:

    • 谢谢,但是我应该补充一点,我正在实现 __getitem__ 方法,所以我不愿意更改切片参数 - 请参阅编辑
    • numpy 的索引规则已经够复杂了。创建更改这些规则的__getitem__ 可能会自找麻烦。要求对象的用户理解 numpy 的规则并传递正确的索引不是更好吗?
    • 非常好,您介意向我们指出解释此行为的 numpy 文档部分吗?
    • @BastianVenthur:我添加了带有文档链接的解释。
    猜你喜欢
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多