ДЕЙСТВИТЕЛЬНО ЛИ ИЗБЫТОК мертв?

Мы можем использовать np.bincount , который предположительно довольно эффективен для такого накопительного взвешенного подсчета, так что вот один из них -

counts = np.bincount(i,v)
d[:counts.size] = counts

Альтернативно, используя вход minlength аргумент и для общего случая, когда d может быть любым массивом, и мы хотим добавить в него -

d += np.bincount(i,v,minlength=d.size).astype(d.dtype, copy=False)

Тесты времени выполнения

В этом разделе сравнивается подход на основе np.add.at в other post с np.bincount, описанным ранее в этом сообщении.

In [61]: def bincount_based(d,i,v):
    ...:     counts = np.bincount(i,v)
    ...:     d[:counts.size] = counts
    ...: 
    ...: def add_at_based(d,i,v):
    ...:     np.add.at(d, i, v)
    ...:     

In [62]: # Inputs (random numbers)
    ...: N = 10000
    ...: i = np.random.randint(0,1000,(N))
    ...: v = np.random.randint(0,1000,(N))
    ...: 
    ...: # Setup output arrays for two approaches
    ...: M = 12000
    ...: d1 = np.zeros(M)
    ...: d2 = np.zeros(M)
    ...: 

In [63]: bincount_based(d1,i,v) # Run approaches
    ...: add_at_based(d2,i,v)
    ...: 

In [64]: np.allclose(d1,d2)  # Verify outputs
Out[64]: True

In [67]: # Setup output arrays for two approaches again for timing
    ...: M = 12000
    ...: d1 = np.zeros(M)
    ...: d2 = np.zeros(M)
    ...: 

In [68]: %timeit add_at_based(d2,i,v)
1000 loops, best of 3: 1.83 ms per loop

In [69]: %timeit bincount_based(d1,i,v)
10000 loops, best of 3: 52.7 µs per loop

16
задан KingNestor 13 February 2009 в 07:56
поделиться

3 ответа

По-моему, ИЗБЫТОК является все еще большим изучить программирование OpenGL в. Это больше не сохраняется, насколько я знаю. Действительно посмотрите на: http://www.opengl.org/resources/libraries/glut/ для официального Word

Выписка из вышеупомянутой ссылки - "Библиотека GLUT имеет обоих C, C++ (то же как C), ФОРТРАН и Ada, программирующая привязку. Распределение исходного кода ИЗБЫТКА является портативным почти ко всем реализациям OpenGL и платформам. Текущая версия 3.7. Дополнительные выпуски библиотеки не ожидаются. ИЗБЫТОК не является открытым исходным кодом. Mark Kilgard поддерживает авторское право".

Также взгляд на: http://www.opengl.org/resources/libraries/windowtoolkits/ для альтернатив.

можно также хотеть проверить GLUX: http://code.google.com/p/glux/

До SDL быть гневом, это является большим для межплатформенного материала, и многие люди используют его. Я лично использую QT для своей работы OpenGL. Другие альтернативы системы управления окнами также существуют. Это также возможно к программе исходно для окон или X.

<час>

Редактирование 28 февраля 2017:

<час>

я должен разъяснить, что студент, надеющийся вскакивать в практичность OpenGL, был бы лучше обслужен путем запуска с SDL или QT, Как @TM справедливо отмечает в его комментарии, использование ИЗБЫТКА далеко удалено из фактов программирования приложения рендеринга реального мира в OpenGL. Мое мнение, что ИЗБЫТОК хорош для изучения, прибывает из мысли, что легче изучить, когда каждый разделяет беспокойство изучения OpenGL от беспокойства приобретения знаний о специфических особенностях Системы управления окнами. Естественно, это не может соответствовать Вашим потребностям.

18
ответ дан 30 November 2019 в 17:53
поделиться

ИЗБЫТОК довольно упрощен для серьезной разработки игр. SDL используется многочисленными коммерческими игровыми компаниями по портированию. ИЗБЫТОК, оказывается, хорош для изучения OpenGL и для простых демонстраций. Что-то как SDL довольно хорошо для фактических игр.

SDL с его абстракциями для других вещей, таких как аудио и различные дополнительные библиотеки SDL (SDL_image, SDL_mixer...) помогают много при записи полной игры. Управление основным циклом также довольно важно.

Если Вы работаете над приложением OpenGL, для которого нужен некоторый собственный GUI также (например, 3D разработчик моделей), можно больше интересоваться использованием wxWidgets или, как batbrat предложены, QT.

12
ответ дан 30 November 2019 в 17:53
поделиться

GLUT - очень полезное учебное руководство, но оно недостаточно полнофункциональное и недостаточно полезное для большинства реальных приложений. Я также столкнулся с небольшими проблемами с несколькими различными реализациями GLUT и поддержкой в ​​некоторых средах, поэтому я научился держаться подальше от всего, кроме быстрых демонстраций.

Мой опыт работы с OpenGL, как правило, был на встроенных системах, где у меня есть полный контроль над выводом, и здесь я использую X Instrinsics, чтобы открыть базовое окно OpenGL. Это немного болезненно, но это небольшой объем кода, чтобы добраться до OpenGL, где большая часть работы выполняется.

0
ответ дан 30 November 2019 в 17:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: