【问题标题】:numpy indexing with conditional transposes dimensions带有条件转置维度的 numpy 索引
【发布时间】:2021-07-21 00:50:44
【问题描述】:

当我混合掩码索引和普通索引时,我得到一个奇怪的结果:

a = np.zeros((3,2,5))
cond = [True]*5
print(a[0][:,cond].shape) # prints '(2,5)' as expected
print(a[0,:,cond].shape)  # prints '(5,2)' which is surprising

即,结果数组是从我认为应该发生的情况转置

这是一个错误吗?这是一个功能吗?如果有人可以向我指出一份解释这一点的文档,我会很高兴:)

【问题讨论】:

    标签: numpy numpy-ndarray


    【解决方案1】:

    不,这不是错误。发生这种情况是因为您混合了基本索引(切片)和高级索引(整数和布尔数组)。它记录在here

    需要区分索引组合的两种情况:

    • 高级索引由切片、省略号或新轴分隔。例如 x[arr1, :, arr2]。

    • 高级索引都彼此相邻。例如 x[..., arr1, arr2, :] 但不是 x[arr1, :, 1] 因为 1 是高级 这方面的索引。

    在第一种情况下,由高级索引生成的维度 运算在结果数组中排在第一位,子空间维度 之后。 在第二种情况下,来自高级的尺寸 索引操作同时插入到结果数组中 就像它们在初始数组中一样(后一种逻辑是 简单的高级索引的行为就像切片一样)。

    【讨论】:

      猜你喜欢
      • 2017-12-31
      • 2016-02-21
      • 2012-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-26
      相关资源
      最近更新 更多