【问题标题】:masking a multidimensional array - numpy屏蔽多维数组 - numpy
【发布时间】:2019-11-21 19:21:49
【问题描述】:

我有两个大小相同的数组(2,3,2)

[[[1, 7],
  [2, 8], 
  [3, 9]],

 [[4, 10],
  [5, 11],
  [6, 12]]]

存储在多维数组中

>>> a  =  np.array([[[[ 1,  1],
              [ 7,  7]],

             [[ 2,  2],
              [ 8,  8]],

             [[ 3,  3],
              [ 9,  9]]],

            [[[ 4,  4],
              [10, 10]],

             [[ 5,  5],
              [11, 11]],

             [[ 6,  6],
              [12, 12]]]])

>>> a.shape
(2, 3, 2, 2)

我正在尝试用m 屏蔽a 中的子数组:

>>> m  =  np.array([[[1, 0],
                 [0, 0],
                 [1, 1]],

                [[1, 1],
                 [0, 1],
                 [0, 0]]])

这应该导致:

[[[[ 1,  1],
   [ 0,  0]

   [ 0,  0],
   [ 0,  0],

   [ 3,  3],
   [ 9,  9]]

  [[ 4, 4],
   [10, 10],

   [ 0,  0],
   [11,  11],

   [ 0,  0],
   [ 0,  0]]]

我尝试使用np.concatenatenp.append 例如np.prod(np.concatenate([a,m],axis=0))

但我的解决方案都不起作用。

【问题讨论】:

    标签: arrays numpy multidimensional-array


    【解决方案1】:

    扩展m的维度,使其与a一起广播:

    In [183]: a*m[...,None]                                                         
    Out[183]: 
    array([[[[ 1,  1],
             [ 0,  0]],
    
            [[ 0,  0],
             [ 0,  0]],
    
            [[ 3,  3],
             [ 9,  9]]],
    
    
           [[[ 4,  4],
             [10, 10]],
    
            [[ 0,  0],
             [11, 11]],
    
            [[ 0,  0],
             [ 0,  0]]]])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-06
      • 2015-05-16
      • 1970-01-01
      • 1970-01-01
      • 2014-03-13
      • 1970-01-01
      • 2011-08-11
      • 2017-08-19
      相关资源
      最近更新 更多