Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

I am experimenting the different dimensions one can have in an array using ndim().

x=np.arange(0,100,1).reshape(1,20,5)

The shape is:

[[[ 0  1  2  3  4]
  [ 5  6  7  8  9]
  [10 11 12 13 14]
  [15 16 17 18 19]
  [20 21 22 23 24]
  [25 26 27 28 29]
  [30 31 32 33 34]
  [35 36 37 38 39]
  [40 41 42 43 44]
  [45 46 47 48 49]
  [50 51 52 53 54]
  [55 56 57 58 59]
  [60 61 62 63 64]
  [65 66 67 68 69]
  [70 71 72 73 74]
  [75 76 77 78 79]
  [80 81 82 83 84]
  [85 86 87 88 89]
  [90 91 92 93 94]
  [95 96 97 98 99]]]

After, print x.ndim shows the array dimension is 3

I cannot visualize why the dimension is 3.

How does the shapes of respective arrays look like with dimensions 0,1,2,3,4,5......?

share|improve this question
    
If you had done .reshape(20,5) then there would be 2 dimensions, and if you had done .reshape(1,1,20,5) there would be 4 dimensions, etc. –  Spencer Hill Jan 19 at 18:24
    
Your numpy array had 3 dimensions but the content of the array is only 2 dimensional because one of the array dimensions has unit length. –  moarningsun Jan 19 at 22:16
    
@Spencer putting it simply,, would the number of arguments in the reshape function determine the dimension of the array? –  user3211991 Jan 20 at 10:24
    
Yes, that is it! –  kattern Jan 20 at 13:22
    
@user3211991 Yes. Just keep in mind that the new shape must be compatible with the total number of elements in the original array, as explained in the reshape documentation. –  Spencer Hill Jan 20 at 14:33

1 Answer 1

up vote 2 down vote accepted

A simply way to count dimension is counting [ in the output. One [ for one dimension. Here you have three [s, therefore you have 3 dimension. Since one of the dimension is 1, you may be mislead. Here is another example:

x=np.arange(0,24,1).reshape(2,2,6)

Then, x is

array([[[ 0,  1,  2,  3,  4,  5],
        [ 6,  7,  8,  9, 10, 11]],

       [[12, 13, 14, 15, 16, 17],
        [18, 19, 20, 21, 22, 23]]])

Now, it is clear that x is a 3 dimension array.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.