【发布时间】:2015-11-04 17:55:54
【问题描述】:
numpy 是否为您在矩阵上执行的每个操作分配新矩阵?
例如:
A = np.random.rand(10, 20)
A = 2 * A # Operation 1: Is a copy of A made, and a reference assigned to A?
B = 2 * A # Operation 2: Does B get a completely different copy of A?
C = A # Operation 3: Does C get a reference to A?
和切片操作:
A[0, :] = 3
链式操作怎么样?
D = A * B * C # Elementwise multiplication, if A * B allocates memory, does
# (A * B) * C allocate another patch of memory?
Numpy 是一个很棒的库,但我只想知道幕后发生了什么。我的直觉说切片操作会修改内存视图,但我不知道分配。
【问题讨论】:
-
您是担心速度,还是担心使用非常大的数组时内存不足?
-
@hpaulj:我主要关心的是速度。但记忆是我要注意的另一件事。