Python多维数组 - 在每行的开头和结尾添加额外值
我想知道怎么在一个多维数组的每一行的开头和结尾加上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)
但这两个命令都没有达到我想要的效果。
2 个回答
0
编辑:我看到你已经在使用 numpy
了。为了帮助大家学习,我还是把这个留着,但你应该使用 hstack
,就像Sven的回答里提到的那样。
>>> 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]]
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
个零。