Hi, Please can somebody help me, Please tell me how the below is different.
a = 3
b = 2
b + a = answer
x = -2 * np.random.rand(200,2)
x0 = 1 + 2 * np.random.rand(100,2)
x[100:200, :] = x0
It is understood that a variable cannot be assigned at the end of a statement, So my scenario 1 wouldn’t work - which I understand, however how is it allowed in scenario 2( which i copied from a code tutorial)
>a variable cannot be assigned at the end of a statement
This is not quite correct. A more accurate statement would be “storing a value takes place on the left side of an equals sign”. What is on the left side of the equals sign is not limited to variables: if the left side is any sort of storage location, it is allowed.
In scenario 1, “b + a” is an expression, and does not result in a storage location.
In scenario 2, “x[100:200, :]” is an expression which results in a storage location. In the assignment, the values from the storage location “x0” are being placed into the storage location “x[100:200, :]” and not the other way around.
Scenario 2 is quite more complicated than scenario 1 in that both “x” and “x0” involve 100s of storage locations. Python allows assigning complex storage objects, not just simple variables.
There are two problems with the statement b + a = answer
- answer is not defined anywhere in the script
2)even if it is defined anywhere in the script, we can’t assign to an operator.
I understand your point of view here,
but the statement x[100:200, :] = x0.
The left side of the statement is a slicing operation. We use a concept called slice assignment. Slice assignment means assigning a value into an element or slice into an array contained by a local variable.
Here x0 is a numpy array containing 100 elements and we are overwriting the values of x from index 100 to 200 with these 100 elements.