python numpy array append not working in .py file, but works in terminal
Solution 1
import numpy as np
a = np.array([1])
print(a)
a = np.append(a, [2])
print(a)
numpy.append(arr, values, axis=None)
, where arr
is values are appended to a copy of this array (http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.append.html).
In terminal your code works because np.append(a,[2])
become print np.append(a,[2])
.
Solution 2
Are you sure that the version of numpy used within your terminal and for the execution of your .py file the same? According to http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.append.html np.append in numpy 1.10.0 is not in place and is therefore consistent with the behaviour you are getting from python test.py
To compare the versions, you can print and compare numpy.__version__
Solution 3
You're misunderstanding what the terminal is doing. When you write the following in a terminal:
>>> a = np.array([1])
>>> np.append(a, [2])
array([1, 2])
You obviously didn't ask it to print, but it does. So the terminal must have inserted a print statement. The terminal is actually running:
a = np.array([1])
print repr(np.append(a, [2]))
That is, all expressions that do not return None
are wrapped in print repr(...)
Of course your code is not inserting the same print statement, so of course it gives a different result
user3052069
Updated on June 16, 2022Comments
-
user3052069 almost 2 years
I am trying to append to a numpy array using np.append.
For example,
a = np.array([1]) np.append(a, [2])
this code works well in terminal (the result is array([1, 2])), but it won't work when I run a .py file including the same code included in it. When I print a after appending [2], it would still be [1].
Here is the code for my test.py file:
import numpy as np a = np.array([1]) print(a) np.append(a, [2]) print(a)
and this is the result of running it with terminal:
python test.py [1] [1]
Wrong result with no error. Does anyone know what could possibly be the problem?