I know there must be a better way to do this with slices, but I can't seem to figure it out - I keep getting errors about the need to have the same dimensions:

Look at the error message more closely.

    ValueError: arrays must have same number of dimensions


What does this mean?


The 1-d array that's being passed in has a different dimension than the 2d array. If we trust the error message, we should make the two arrays the same dimension before we pass them to functions that glue these arrays together.


We want both of them to be two-dimensional.  If we look in:

    http://www.scipy.org/Numpy_Functions_by_Category

we should see several ways to do this.  One way is with reshape:

    http://www.scipy.org/Numpy_Example_List_With_Doc#reshape

For example:

########################################
numpy.array([1, 2, 3]).reshape(1, 3)
array([[1, 2, 3]])


numpy.append(numpy.array([1, 2, 3]),
...              numpy.array([[4, 5, 6],
...                           [7, 8, 9]]),
...              axis=0)
Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
File "/usr/lib/python2.5/site-packages/numpy/lib/function_base.py", line 1492, in append
    return concatenate((arr, values), axis=axis)
ValueError: arrays must have same number of dimensions
#####################################################


As we expect, this fails. But let's try to reshape the first array into two dimensions and try again.


#####################################################
numpy.append(numpy.array([1, 2, 3]).reshape(1, 3),
...              numpy.array([[4, 5, 6],
...                           [7, 8, 9]]),
...              axis=0)
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
########################################


Another way is to use numpy.atleast_2d(), and for your particular example, it's probably more appropriate than using reshape() on the 1-d array.

####################################################
numpy.atleast_2d(numpy.array([3,1,4,1,5]))
array([[3, 1, 4, 1, 5]])
numpy.atleast_2d(numpy.array([3,1,4,1,5])).shape
(1, 5)
####################################################

See:

    http://www.scipy.org/Numpy_Example_List_With_Doc#atleast_2d
_______________________________________________
Tutor maillist  -  [email protected]
http://mail.python.org/mailman/listinfo/tutor

Reply via email to