konstant
konstant

Reputation: 705

How does memory allocation work in python in this case?

Suppose I have a very large numpy array a, and I want to add the numerical value 1 to each element of the array. From what I have read so far:

a += 1 

is a good way of doing it rather than:

a = a + 1

since in the second case a new array a is created in a different memory slot, while in the first case the old array is effectively replaced in the same memory slot.

Suppose I want to do the following instead:

a = 1-a

What would be the memory efficient way of doing the above?

Upvotes: 2

Views: 45

Answers (2)

user2357112
user2357112

Reputation: 280973

numpy.subtract(1, a, out=a)

Using the subtract ufunc directly gives you more control than the - operator. Here, we use the out parameter to place the results of the subtraction back into a.

Upvotes: 6

Julien
Julien

Reputation: 15071

You could do it in place like so:

a *= -1
a += 1

Upvotes: 3

Related Questions