多维数组的布尔索引

时间:2019-01-25 00:15:35

标签: python-3.x numpy indexing

如何为多维数组创建布尔索引?香港专业教育学院还尝试了数据[标签== 0,:,:]

数据的形状(6000、28、28)

标签的形状(6000,1)

new = data[labels == 0]

IndexError:布尔索引与维度1上的索引数组不匹配;维度为28,但相应的布尔维度为1

我能够运行以下内容

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

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

2 个答案:

答案 0 :(得分:0)

您是否使用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]]])

答案 1 :(得分:0)

我能够执行以下操作

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