【问题标题】:Boolean index for multidimensional array多维数组的布尔索引
【发布时间】:2019-06-18 19:36:57
【问题描述】:

如何为多维数组创建布尔索引?我也试过 data[labels == 0, :, :]

数据的形状为 (6000, 28, 28)

标签的形状为 (6000, 1)

new = data[labels == 0]

IndexError:布尔索引与第 1 维的索引数组不匹配;维度是 28,但对应的布尔维度是 1

我可以运行以下命令

new= data[np.where(labels == c)]

但我返回的形状是 (num_matching_criteria, 28)

【问题讨论】:

  • 展平标签

标签: python-3.x numpy indexing


【解决方案1】:

你在使用 numpy 数组吗?当数据和标签都是 numpy 数组时,它对我有用。

>>> import numpy
>>> a = numpy.arange(24).reshape((4,3,2))
>>> a
array([[[ 0,  1],
        [ 2,  3],
        [ 4,  5]],
       [[ 6,  7],
        [ 8,  9],
        [10, 11]],
       [[12, 13],
        [14, 15],
        [16, 17]],
       [[18, 19],
        [20, 21],
        [22, 23]]])
>>> labels = numpy.array([1,0,1, 0])
>>> a[labels > 0]
array([[[ 0,  1],
        [ 2,  3],
        [ 4,  5]],
       [[12, 13],
        [14, 15],
        [16, 17]]])
>>> a[labels == 0]
array([[[ 6,  7],
        [ 8,  9],
        [10, 11]],
       [[18, 19],
        [20, 21],
        [22, 23]]])

【讨论】:

    【解决方案2】:

    我能够做到以下几点

    sel = np.array(labels == c)[:,0]
    slice = data[sel]
    

    【讨论】:

      猜你喜欢
      • 2017-11-17
      • 2018-04-01
      • 2012-04-10
      • 2013-06-19
      • 2016-01-08
      • 2013-07-20
      • 2020-03-25
      • 2012-11-16
      • 1970-01-01
      相关资源
      最近更新 更多