如何在多维数组的每一行的开头和结尾添加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)
这些命令中的任何一个都没有达到我想要的效果。
答案 0 :(得分:4)
无法将条目添加到二维数组的单个行中。所有行必须始终具有相同的长度。但您可以一次向所有行添加条目。
如果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
零。
答案 1 :(得分:0)
numpy
了。我会为了教育而留下这个,但你应该像Sven's answer一样使用hstack
。
>>> 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]]