在 Python 中将列表转换为列向量

Mkc*_*kch 4 python transpose numpy

我想知道是否有一个函数将列表X作为输入并输出对应于X?

(我环顾四周,我怀疑这可能是:np.matrix(X).T

Pau*_*zer 8

我不认为有一个功能,但有一个专用的对象, np.c_

>>> X = list('hello world')
>>> X
['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
np.c_[X]
array([['h'],
       ['e'],
       ['l'],
       ['l'],
       ['o'],
       [' '],
       ['w'],
       ['o'],
       ['r'],
       ['l'],
       ['d']], dtype='<U1')
Run Code Online (Sandbox Code Playgroud)

你也可以这样做(注意额外的方括号)

>>> np.array([X]).T
Run Code Online (Sandbox Code Playgroud)


Mad*_*ist 6

如果你想将Python列表转换为numpy列向量,你可以使用conductorndmin的参数array

col_vec = np.array(X, ndmin=2)
Run Code Online (Sandbox Code Playgroud)

简单地构造一个数组将得到一个一维数组,它不能直接转置:

a = np.array(X)
a is a.T
Run Code Online (Sandbox Code Playgroud)

有几种方法可以将一维向量转换为列:

col_vec = a.reshape(-1, 1)
Run Code Online (Sandbox Code Playgroud)

col_vec = a[np.newaxis, :]
Run Code Online (Sandbox Code Playgroud)

当你的列表已经是一个数组之后,这是相当常见的习惯用法。

col_vec = np.reshape(X, (-1, 1))
Run Code Online (Sandbox Code Playgroud)

col_vec = np.expand_dims(X, -1)
Run Code Online (Sandbox Code Playgroud)

即使在原始列表上也能工作。

PS:远离np.matrix它,即使不是彻底弃用,它也是非常过时和有限的。


Jah*_*ows 0

列表是 Python 的原生类型,而 numpy 数组是 numpy 对象。您需要首先将列表转换为 numpy 数组。您可以执行以下操作。

x = list(range(5))
print(x)
Run Code Online (Sandbox Code Playgroud)

[0,1,2,3,4]

x_vector = np.asarray(x)
Run Code Online (Sandbox Code Playgroud)

数组([0,1,2,3,4])

现在,Python 不知道行向量和列向量有什么区别,这取决于你如何使用向量。当前向量为 1x5。如果你想要 5x1,你可以通过以下任一方式进行转置

x_vector.T
Run Code Online (Sandbox Code Playgroud)

或者

np.transpose(x_vector)
Run Code Online (Sandbox Code Playgroud)

然而,由于这是一个一维矩阵,转置与内存中的非转置向量相同。

  • 正如您所猜测的,转置将无法正常工作。当没有两个暗淡可供交换时,您无法交换两个暗淡。 (2认同)