Question

In a function, I give a Numpy array : It can be multi-dimentional but also one-dimentional

So when I give a multi-dimentional array :

np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]]).shape
>>> (3, 4)

and

np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]]).shape[1]
>>> 4

Fine.

But when I ask the shape of

np.array([1,2,3,4]).shape
>>> (4,)

and

np.array([1,2,3,4]).shape[1]
>>> IndexError: tuple index out of range

Ooops, the tuple contain only one element... while I want 1 to indicate it is a one-dimentional array. Is there a way to get this ? I mean with a simple function or method, and without a discriminant test with ndim for exemple ?

Thanks !

Was it helpful?

Solution

>>> a
array([1, 2, 3, 4])
>>> a.ndim
1
>>> b = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
>>> b.ndim
2

If you wanted a column vector, you can use the .reshape method - in fact, .shape is actually a settable property so numpy also lets you do this:

>>> a
array([1, 2, 3, 4])
>>> a.shape += (1,)
>>> a
array([[1],
       [2],
       [3],
       [4]])
>>> a.shape
(4, 1)
>>> a.ndim
2

OTHER TIPS

Hmm, there is no way to set default value for accessing list element, but you can try:

>>> shape = np.array([1,2,3,4]).shape
>>> shape[1] if shape[1:] else 1
1

HTH.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top