Нужно ли писать все переменные и цикл с NumPy? - PullRequest
0 голосов
/ 07 сентября 2018

Я видел, как кто-то пытался использовать python и numpy для симуляции. Тем не менее, это было тихо медленно. Я прочитал его код, и оказалось, что он использовал только пустые пакеты, когда имел дело с вычислением массива / матрицы, а все остальные переменные и коды были определены в главной консоли python (то есть для циклов).

Мои вопросы:

  1. Необходимо ли записывать всю переменную как переменную numpy, например, np.float, чтобы получить все возможности пакета numpy?

  2. Кроме того, насколько я понимаю, цикл python for работает довольно медленно. Но я не хочу использовать Cython ради простоты и читабельности. Есть ли у немца способ использовать специальный итерационный процесс для ускорения вычислений? Я видел страницу, которая выглядит так, но не совсем поняла (https://docs.scipy.org/doc/numpy/reference/arrays.nditer.html). В основном, как использовать все возможности пакета numpy?

1 Ответ

0 голосов
/ 07 сентября 2018

Поскольку вы не предоставили подробную информацию о своей программе, я предполагаю, что вам интересно, быстрее ли работает numpy.ndarray, чем при использовании обычного цикла python.

Да, это намного быстрее.

Это называется векторизацией. Это быстрее, потому что:

  1. Он будет выполняться предварительно скомпилированной библиотекой C / C ++ и, следовательно, быстрее, чем выполнение сценария Python
  2. Использует преимущества архитектуры современного процессора. См .: ссылка

Тем не менее, это также зависит от того, что вы хотите с ним делать. Если вы выполняете математические / матричные операции, то векторизация также обеспечивает лучшую читаемость (поскольку она выглядит просто как уравнение) и больший импульс, поскольку операции в основном являются числовыми. Если операции не являются числовыми, вы получите меньший прирост и, следовательно, сможете сделать это на языке Python.

...