【问题标题】:Extracting 1d arrays from 3d numpy array using 2d boolean使用 2d 布尔值从 3d numpy 数组中提取 1d 数组
【发布时间】:2017-03-01 21:44:46
【问题描述】:

假设我有一个 3d numpy 数组:

i, j, k = 10, 3, 4

arr = np.arange(120).reshape(i, j, k)

和一个二维布尔数组:

mask = np.random.random((j, k)) > 0.5

n = mask.sum()

我希望能够从arr 沿其第一维提取与maskTrue 值相对应的一维数组。结果应该有形状,(i, n)。这怎么可能?

我提取了一些旧代码,出于某种原因我在做arr[mask],但这给出了(n, k) 的形状(我不确定为什么)和一个警告:

VisibleDeprecationWarning: boolean index did not match indexed array along dimension 0; dimension is 10949 but corresponding boolean dimension is 11

【问题讨论】:

  • 发布的解决方案对您有用吗?
  • 是的,谢谢!现在这很有意义。

标签: python arrays numpy indexing reshape


【解决方案1】:

仅沿最后两个轴进行遮罩 -

arr[:,mask]

【讨论】:

    猜你喜欢
    • 2020-06-16
    • 2017-06-18
    • 2021-08-15
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多