2010-11-30 3 views
0

я следующее:Использование izip над вторым измерением Numpy массива

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

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

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

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

+1

Что такое dostuff(), а именно он может быть реализован в numpy ufuncs – 2010-11-30 04:31:33

+0

Есть ли опечатка ?: data [:, i] – Kabie 2010-11-30 04:44:51

+0

@ vincent, no dostuff() не может быть сделано в numpy, к сожалению. – 2010-11-30 14:43:48

ответ

3

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

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

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

1

Вы могли бы использовать:

??? = numpy.transpose(data) 

EDIT: удалить вторую версию. Поскольку транспозиция не копирует массив, как я полагал, нет никаких оснований для чего-то такого сумасшедшего, как я делал.

Смежные вопросы