Использование izip для второго измерения массива numpy - PullRequest
0 голосов
/ 30 ноября 2010

У меня есть следующее:

for i in xrange(n):
    label = labels[i]
    frame = data[:, i]
    dostuff()

Где данные являются массивом 2-D numpy.Я хотел бы переписать его, используя izip.

for label, frame in izip(labels, ???):
    dostuff()

Чем заменить ???, чтобы заставить это работать?

Ответы [ 2 ]

3 голосов
/ 30 ноября 2010

Если вы действительно хотите использовать izip(), вы можете сделать это так:

for label, frame in izip(labels, data.T):
    dostuff()

Как правило, желательно не выполнять итерацию по массиву NumPy с помощью цикла Python, а вместо этого использовать NumPy ufuncs для выполнения циклов в коде C. Как это сделать, зависит от того, что на самом деле делает dostuff().

1 голос
/ 30 ноября 2010

Вы можете использовать:

  ??? = numpy.transpose(data)

РЕДАКТИРОВАТЬ: удалить вторую версию. Поскольку transpose не копирует массив, как я предполагал, нет никаких причин для чего-то столь безумного, как я делал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...