python创建列向量_的Python:行和列向量之间的区别

Is there a good way of differentiating between row and column vectors in python? So far I'm using numpy and scipy and what I see so far is that If I was to give one a vector, say

from numpy import *

Vector = array([1,2,3])

they wouldn't be able to say weather I mean a row or a column vector. Moreover:

array([1,2,3]) == array([1,2,3]).transpose()

True

Which in "real world" is simply untrue.

I realize that most of the functions on vectors form the mentioned modules don't need the differentiation. For example outer(a,b) or a.dot(b) but I'd like to differentiate for my own convenience.

解决方案

You can make the distinction explicit by adding another dimension to the array.

>>> a = np.array([1, 2, 3])

>>> a

array([1, 2, 3])

>>> a.transpose()

array([1, 2, 3])

>>> a.dot(a.transpose())

14

Now force it to be a column vector:

>>> a.shape = (3,1)

>>> a

array([[1],

[2],

[3]])

>>> a.transpose()

array([[1, 2, 3]])

>>> a.dot(a.transpose())

array([[1, 2, 3],

[2, 4, 6],

[3, 6, 9]])

Another option is to use np.newaxis when you want to make the distinction:

>>> a = np.array([1, 2, 3])

>>> a

array([1, 2, 3])

>>> a[:, np.newaxis]

array([[1],

[2],

[3]])

>>> a[np.newaxis, :]

array([[1, 2, 3]])

你可能感兴趣的:(python创建列向量)