Предположим, что у меня есть код, показанный ниже
import numpy as np
n = 100
a = np.empty((n,))
b = np.random.random((n,))
c = np.random.random((n,))
def sum(x, y):
return x + y
# assignment 1
a = b + c
# assignment 2
a = sum(b, c)
# assignment 3
d = b + c
# assignment 4
b = b + c
Интересно, что numpy делает для каждого назначения?
- Для назначения 1 и 2 он создает временный массивсначала скопируйте содержимое в
a
?Или он вычисляет b + c
и сохраняет результат непосредственно в a
? - Для присвоения 3 инициализирует
d
и непосредственно сохраняет результат b + c
в d
? - Для присвоения 4, создает ли он временную переменную или просто изменяет
b
на месте (эквивалентно записи b += c
)?
Это не имеет большого значения для небольшого числа n
, но как только он достигнет 10^7
или выше, я думаю, что это может иметь большое значение с точки зрения скорости.