Каковы различия в производительности и поведении между использованием Python native sum
и NumPy numpy.sum
? sum
работает с массивами NumPy, а numpy.sum
работает с списками Python, и оба они возвращают один и тот же эффективный результат (не проверяли граничные случаи, такие как переполнение), но разные типы.
>>> import numpy as np
>>> np_a = np.array(range(5))
>>> np_a
array([0, 1, 2, 3, 4])
>>> type(np_a)
<class 'numpy.ndarray')
>>> py_a = list(range(5))
>>> py_a
[0, 1, 2, 3, 4]
>>> type(py_a)
<class 'list'>
# The numerical answer (10) is the same for the following sums:
>>> type(np.sum(np_a))
<class 'numpy.int32'>
>>> type(sum(np_a))
<class 'numpy.int32'>
>>> type(np.sum(py_a))
<class 'numpy.int32'>
>>> type(sum(py_a))
<class 'int'>
Изменить: Я думаю, что мой практический вопрос здесь будет заключаться в использовании numpy.sum
в списке целых чисел Python, который будет быстрее, чем использование собственного sum
Кроме того, каковы последствия (включая производительность) использования целого числа Python по сравнению со скаляром numpy.int32
? Например, для a += 1
существует ли поведение или разность производительности, если тип a
является целым числом Python или numpy.int32
? Мне любопытно, если быстрее использовать скалярный тип NumPy типа numpy.int32
для значения, которое добавлено или вычитано много в коде Python.
Для пояснения я работаю над симуляцией биоинформатики, которая частично состоит из коллапсирующего многомерного numpy.ndarray
в одиночные скалярные суммы, которые затем дополнительно обрабатываются. Я использую Python 3.2 и NumPy 1.6.
Спасибо заранее!