# Difference between array( [1,0,1] ) and array( [ [1,0,1] ] )

```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

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.giovannozzi at 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

```