我在想是否有一个函数,可以将列表
(我查看了一些资料,怀疑这个函数可能是:
X
作为输入,并输出对应于X
的列向量?(我查看了一些资料,怀疑这个函数可能是:
np.matrix(X).T
)我认为没有一个函数可以实现,但是有一个专门的对象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')
您也可以这样做(注意额外的方括号)
>>> np.array([X]).T
如果你想将一个Python列表转换成numpy列向量,你可以使用array
构造函数的ndmin
参数:
col_vec = np.array(X, ndmin=2)
简单地构建一个数组将给你一个一维数组,它不能直接转置:
a = np.array(X)
a is a.T
有几种方法可以将一维向量转换为列:
col_vec = a.reshape(-1, 1)
并且
col_vec = a[np.newaxis, :]
在你的列表已经是一个数组之后,这些都是相当常见的习语。
col_vec = np.reshape(X, (-1, 1))
并且
col_vec = np.expand_dims(X, -1)
即使是原始列表也可以正常工作。
附言:远离 np.matrix
,它非常过时且有限,如果不是被明确弃用的话。
列表是 Python 的内置类型,而 numpy 数组则是 numpy 对象。您需要先将列表转换为 numpy 数组。您可以执行以下操作:
x = list(range(5))
print(x)
x_vector = np.asarray(x)
x_vector.T
或者
np.transpose(x_vector)
然而,由于这是一个一维矩阵,转置与内存中的非转置向量相同。
相似但不同:
mylist=[2,3,4,5,6]
方法1:
np.array([[i] for i in mylist])
输出:
array([[2],
[3],
[4],
[5],
[6]])
方法2:
np.array(mylist).reshape(len(mylist),1)
output:
array([[2],
[3],
[4],
[5],
[6]])
np.reshape(X, (len(X), 1))
- It'll also acceptX
even if it's alist
ortuple
- dROOOzenp.array([1,2,3,4])
创建了一个一维数组,形状为(4,)
。通常这已经足够了。列向量的形状为(4,1)
。有很多方法可以将该维度添加到一维数组中。 - hpaulj