【问题标题】:Python Multidimensional Array - Adding additional values to beginning and end of each rowPython多维数组 - 在每行的开头和结尾添加附加值
【发布时间】:2011-05-26 06:47:21
【问题描述】:

如何在多维数组的每一行的开头和结尾添加 0?这是我试图应用于每一行的函数。

def zero(ltr):
  for x in range (1,int((N+1)/2)):
        ltr = append(([0]), ltr)
        ltr = append(ltr,([0]))
  return ltr 

我都试过了

for row in a:
   zero(row)

apply_along_axis(zero,1,a) 这些命令都没有我想要的。

【问题讨论】:

    标签: python multidimensional-array numpy iteration


    【解决方案1】:

    无法将条目添加到二维数组的单行。所有行必须始终具有相同的长度。但是您可以一次将条目添加到所有行。

    如果a是一个二维NumPy数组,可以使用numpy.hstack左右加零:

    a = numpy.array([[  0.,   1.,   2.,   3.],
                     [  4.,   5.,   6.,   7.],
                     [  8.,   9.,  10.,  11.]])
    numpy.hstack((numpy.zeros((a.shape[0], 2)), a, numpy.zeros((a.shape[0], 1))))
    # array([[  0.,   0.,   0.,   1.,   2.,   3.,   0.],
    #        [  0.,   0.,   4.,   5.,   6.,   7.,   0.],
    #        [  0.,   0.,   8.,   9.,  10.,  11.,   0.]])
    

    为了举例,我在左侧添加了2 零,在右侧添加了1 零。

    【讨论】:

      【解决方案2】:

      编辑:我看到你已经在使用numpy。为了教育起见,我会留下这个,但你应该使用hstack,就像Sven's answer一样。

      >>> a = [[1, 1, 1], [1, 1, 1], [1, 1, 1]]
      >>> for row in a:
      ...     row.insert(0, 0)
      ...     row.append(0)
      ...
      >>> a
      [[0, 1, 1, 1, 0], [0, 1, 1, 1, 0], [0, 1, 1, 1, 0]]
      

      或者如果您愿意:

      >>> import operator
      >>> a = [[1, 1, 1], [1, 1, 1], [1, 1, 1]]
      >>> map(operator.methodcaller("insert", 0, 0), a)
      [None, None, None]
      >>> map(operator.methodcaller("append", 0), a)
      [None, None, None]
      >>> a
      [[0, 1, 1, 1, 0], [0, 1, 1, 1, 0], [0, 1, 1, 1, 0]]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-18
        • 2018-11-25
        • 1970-01-01
        • 1970-01-01
        • 2012-02-09
        相关资源
        最近更新 更多