Использование izip для второго измерения массива numpy

100
10

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


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

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


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

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

спросил(а) 2021-01-19T19:03:51+03:00 6 месяцев, 2 недели назад
1
Решение
89

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


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

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

ответил(а) 2021-01-19T19:03:51+03:00 6 месяцев, 2 недели назад
64

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


  ??? = numpy.transpose(data)

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

ответил(а) 2021-01-19T19:03:51+03:00 6 месяцев, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема