Есть ли способ для векторизации операции, которая принимает несколько массивов numpy и помещает их в список словарей?Список словарей из массива numpy без цикла
Вот упрощенный пример. Реальный сценарий может включать больше массивов и больше словарных клавиш.
import numpy as np
x = np.arange(10)
y = np.arange(10, 20)
z = np.arange(100, 110)
print [dict(x=x[ii], y=y[ii], z=z[ii]) for ii in xrange(10)]
я мог бы иметь тысячи или сотни тысяч итераций в xrange
вызова. Все манипуляции для создания x
, y
и z
векторизованы (мой пример не так прост, как указано выше). Таким образом, есть только 1 для цикла, чтобы избавиться, что, я ожидаю, приведет к огромным ускорениям.
Я попытался использовать map
с функцией создания дикта и всех видов других работ вокруг. Кажется, что цикл Python for
является медленной частью (как обычно). Я как бы застрял в использовании словарей из-за ранее существовавших требований API. Тем не менее, было бы интересно увидеть решения без dicts и массивов записей или что-то еще, но в конечном итоге я не думаю, что это будет работать с существующим API.
'г = г [II]', хороший улов! –
'[dict (x = x_, y = y_, z = z_) для x_, y_, z_ в zip (x, y, z)]. Это векторизован до чистого Python. –
Вы пробовали со списком и пониманием? это слишком медленно? – MMF