In [1]:
import numpy as np

In [2]:
a = np.random.randn(5)

In [3]:
print(a)


[ 1.32404785  1.28870062  0.13160907 -0.99692843 -0.35465661]

In [4]:
print(a.shape)


(5,)

In [5]:
print(a.T)


[ 1.32404785  1.28870062  0.13160907 -0.99692843 -0.35465661]

In [6]:
print(np.dot(a, a.T)) # get a scalar instead of matrix


4.55082054651

Tips: Avoid data structures where shape is 5, or n, (rank 1 array)

-> Use column vectors or row vectors


In [7]:
a = np.random.rand(5, 1)
print(a) # column vector


[[ 0.00874078]
 [ 0.29663725]
 [ 0.67076433]
 [ 0.08459963]
 [ 0.03768592]]

In [8]:
print(a.shape)


(5, 1)

In [9]:
print(a.T) # row vector


[[ 0.00874078  0.29663725  0.67076433  0.08459963  0.03768592]]

In [10]:
print(np.dot(a, a.T))


[[  7.64012894e-05   2.59284184e-03   5.86300553e-03   7.39467054e-04
    3.29404467e-04]
 [  2.59284184e-03   8.79936564e-02   1.98973684e-01   2.50954026e-02
    1.11790480e-02]
 [  5.86300553e-03   1.98973684e-01   4.49924787e-01   5.67464170e-02
    2.52783720e-02]
 [  7.39467054e-04   2.50954026e-02   5.67464170e-02   7.15709811e-03
    3.18821518e-03]
 [  3.29404467e-04   1.11790480e-02   2.52783720e-02   3.18821518e-03
    1.42022868e-03]]

Tips: Use assert to check the data structures


In [11]:
assert(a.shape == (5, 1))

In [ ]: