Каковы различия в производительности и поведении между использованием функции sum
на Python иNumPy? sum
работает с массивами NumPy и numpy.sum
работает над списками Python, и оба они возвращают одинаковый эффективный результат (не проверяли граничные случаи, такие как переполнение), но разные типы.Сумма Python по сравнению с numpy.sum NumPy
>>> 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'>
Edit: Я думаю, что мой практический вопрос здесь бы использовать numpy.sum
в списке целых чисел Python будет быстрее, чем с помощью Python собственного sum
?
Кроме того, каковы последствия (включая производительность) использования целого числа Python по сравнению со скаляром numpy.int32
? Например, для a += 1
существует ли поведение или разница в производительности, если тип a
является целым числом Python или numpy.int32
? Мне любопытно, если быстрее использовать скалярный тип NumPy типа numpy.int32
для значения, которое добавляется или вычитается из кода Python.
Для уточнения, я работаю над симуляцией биоинформатики, которая частично состоит из коллапсирующего многомерного numpy.ndarray
s в единичные скалярные суммы, которые затем дополнительно обрабатываются. Я использую Python 3.2 и NumPy 1.6.
Заранее благодарен!
+1, Но разве у вас нет этих результатов назад? – dawg
@drewk, Да, я сделал их назад. Спасибо, что указали это! Исправлена. – Akavall
Вы правы, когда 'np.sum' работает быстрее при использовании' np.array'. Но если вы время «np.sum (объект np.array)» и «sum (объект списка)», обе выполняют почти одинаково. – xyres