python numpy array append not working in .py file, but works in terminal

11,770

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

Share:
11,770
user3052069
Author by

user3052069

Updated on June 16, 2022

Comments

  • user3052069
    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?