Mar*_*zyk 61 python arrays numpy vector scipy
有没有一种很好的方法来区分python中的行和列向量?到目前为止,我正在使用numpy和scipy,我到目前为止看到的是,如果我要给一个向量,说
from numpy import *
Vector = array([1,2,3])
Run Code Online (Sandbox Code Playgroud)
他们不能说天气我的意思是行或列向量.此外:
array([1,2,3]) == array([1,2,3]).transpose()
True
Run Code Online (Sandbox Code Playgroud)
在"现实世界"中哪个是不真实的.我意识到来自上述模块的载体上的大多数功能都不需要区分.例如outer(a,b)或者a.dot(b)我想为了自己的方便而区分.
bog*_*ron 61
您可以通过向数组添加另一个维来明确区分.
>>> a = np.array([1, 2, 3])
>>> a
array([1, 2, 3])
>>> a.transpose()
array([1, 2, 3])
>>> a.dot(a.transpose())
14
Run Code Online (Sandbox Code Playgroud)
现在强制它成为列向量:
>>> 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]])
Run Code Online (Sandbox Code Playgroud)
另一种选择是在想要区分时使用np.newaxis:
>>> 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]])
Run Code Online (Sandbox Code Playgroud)
dav*_*idA 22
[]在写入向量时使用double .
然后,如果你想要一个行向量:
row_vector = array([[1, 2, 3]]) # shape (1, 3)
Run Code Online (Sandbox Code Playgroud)
或者如果你想要一个列向量:
col_vector = array([[1, 2, 3]]).T # shape (3, 1)
Run Code Online (Sandbox Code Playgroud)
您要创建的向量既不是row也不是column。它实际上只有1维。您可以通过以下方式验证
myvector.ndim,其1myvector.shape,即(3,)(仅包含一个元素的元组)。对于行向量,应为(1, 3),对于列(3, 1)两种处理方法
reshape 您当前的您可以显式创建行或列
row = np.array([ # one row with 3 elements
[1, 2, 3]
]
column = np.array([ # 3 rows, with 1 element each
[1],
[2],
[3]
])
Run Code Online (Sandbox Code Playgroud)
或者,使用快捷方式
row = np.r_['r', [1,2,3]] # shape: (1, 3)
column = np.r_['c', [1,2,3]] # shape: (3,1)
Run Code Online (Sandbox Code Playgroud)
或者,您可以将其重塑(1, n)为行或(n, 1)列
row = my_vector.reshape(1, -1)
column = my_vector.reshape(-1, 1)
Run Code Online (Sandbox Code Playgroud)
,其中会-1自动找到的值n。
小智 6
我想你可以使用numpy.array的ndmin选项.保持2表示它将是(4,1)并且转置将是(1,4).
>>> a = np.array([12, 3, 4, 5], ndmin=2)
>>> print a.shape
>>> (1,4)
>>> print a.T.shape
>>> (4,1)
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以将数组的元素存储在行或列中,如下所示:
>>> a = np.array([1, 2, 3])[:, None] # stores in rows
>>> a
array([[1],
[2],
[3]])
>>> b = np.array([1, 2, 3])[None, :] # stores in columns
>>> b
array([[1, 2, 3]])
Run Code Online (Sandbox Code Playgroud)