Thanks Edmondo, Stephen, Mats and Steven you for the tips,

I studied linear algebra many years ago and I remember only a few rudiments.

But I was trying to visualize (in a geometric way) how the numpy represents arrays, and what the geometrical meaning of the transpose operation made by numpy.

I think I understood a little bit more.

The number of nested brackets indicates the number of array dimensions.
the vector ( [1,2] ) is one-dimensional, but the vector ( [ [1,2] ] ) is two-dimensional.

v_1 = np.array( [1,2] )
> v_1.shape
(2,)
> v_1
v_1
> v_1
array( [1, 2] )
> v_2 = np.array( [ [1,2] ] )
> v_2.shape
(1, 2)

And it does not make sense to transpose a one-dimensional array.

> v_1.T
array( [1, 2] )
> v_2.T
array( [ [1],
             [2] ] )

Anothe example:

vector_1 = np.array( [   1,   2,   3,   4,   5,   6,   7,   8  ] )

                                  ^

vector_2 = np.array( [    [1, 2, 3, 4],    [5, 6, 7, 8]  ]  )

                                  ^  ^

vector_3 = np.array( [   [   [1,2],  [3,4]  ], [  [5,6],   [7,8] ]  ]  )

                                  ^ ^ ^

> vector_1
array([1, 2, 3, 4, 5, 6, 7, 8])
> vector_2
array( [ [1, 2, 3, 4],
             [5, 6, 7, 8] ] )
> vector_3
array( [ [ [1, 2],
               [3, 4] ],

             [ [5, 6],
               [7, 8] ] ] )

And looking for some tutorial about geometric aspects of matrices and the geometric meaning of the transpose I found that transposed is "mirrored along the diagonal" at:

https://www.coranac.com/documents/geomatrix/

>vector_1.T
array([1, 2, 3, 4, 5, 6, 7, 8])
> vector_2.T
array( [ [1, 5],
             [2, 6],
             [3, 7],
             [4, 8] ] )
> vector_3.T
array( [ [ [1, 5],
               [3, 7]],

             [ [2, 6],
               [4, 8] ] ] )

Thank you,
Markos

Em 21-06-2019 07:44, edmondo.giovanno...@gmail.com escreveu:
Every array in numpy has a number of dimensions,
"np.array" is a function that can create an array numpy given a list.

when  you write
vector_1  = np.array([1,2,1])
you are passing a list of number to thet function array that will create a 1D 
array.
As you are showing:
vector_1.shape
will return a tuple with the sizes of each dimension of the array that is:
(3,)
Note the comma thta indicate that is a tuple.
While if you write:
vector_2 = np.array([[1,2,3]])
You are passing a list of list to the function array that will instruct it to 
crete a 2D array, even though the size of the first dimension is 1:
vector_2.shape
(1,3)
It is still a tuple as you can see.
Try:
vector_3 = np.array([[1,2,3],[4,5,6]])
And you'll see that i'll return a 2D array with a shape:
vector_3.shape
(2,3)
As the external list has 2 elements that is two sublists each with 3 elements.
The vector_2 case is just when the external list has only 1 element.

I hope it is more clear now.
Cherrs,

Il giorno venerdì 21 giugno 2019 08:29:36 UTC+2, Markos ha scritto:
Hi,

I'm studying Numpy and I don't understand the difference between

vector_1 = np.array( [ 1,0,1 ] )
with 1 bracket and

vector_2 = np.array( [ [ 1,0,1 ] ] )
with 2 brackets

The shape of vector_1 is:

vector_1.shape
(3,)

But the shape of vector_2 is:

vector_2.shape
(1, 3)

The transpose on vector_1 don't work:

vector_1.T
array([1, 0, 1])

But the transpose method in vector_2 works fine:

vector_2.T
array([[1],
         [0],
         [1]])


I thought that both vectors would be treated as an matrix of 1 row and 3
columns.

Why this difference?

Any tip?

Thank you,
Markos

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to