22

I have a problem using the function numpy.append. I wrote the following function as part of a larger piece of code, however, my error is reproduced in the folowing:

data = [
         [
          '3.5', '3', '0', '0', '15', '6', 
          '441', 'some text', 'some more complicated data'
         ], 
         [
          '4.5', '5', '1', '10', '165', '0', 
          '1', 'some other text', 'some even more complicated data'
         ]
       ]

def GetNumpyArrey(self, index):
    r = np.array([])
    for line in data:
        np.append(r, float(line[index]))

    print r

index < 6. the result is:

>> []

what am I doing wrong?

Thanks a lot !

2
  • 2
    stackoverflow.com/questions/5064822/… Commented Nov 22, 2012 at 4:59
  • 1
    As @BrenBarn points out, there is no reason to use numpy.append here. The most efficient thing to do is initially allocate r to len(data). If you don't know the length in advance (e.g. reading from a file), then @BrenBarn's suggestion of creating a list and converting to an array is best. Commented Nov 22, 2012 at 8:27

1 Answer 1

41

Unlike the list append method, numpy's append does not append in-place. It returns a new array with the extra elements appended. So you'd need to do r = np.append(r, float(line[index])).

Building up numpy arrays in this way is inefficient, though. It's better to just build your list as a Python list and then make a numpy array at the end.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.