Многомерный массив Python - добавление дополнительных значений в начало и конец каждой строки - PullRequest
2 голосов
/ 16 декабря 2010

Как мне добавить 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 ]

4 голосов
/ 16 декабря 2010

Невозможно добавить записи в отдельные строки двумерного массива.Все строки всегда должны иметь одинаковую длину.Но вы можете добавлять записи во все строки одновременно.

Если 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 нуля справа.

0 голосов
/ 16 декабря 2010

РЕДАКТИРОВАТЬ: я вижу, что вы уже используете numpy. Я оставлю это ради образования, но вы должны использовать 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]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...