这是我的第一篇博文,我还是一个Python和Scipy的新手,所以请对我手下留情!我正在尝试将一个Nx 1矩阵转换成一个Python列表。假设我有一些3x 1矩阵x = scipy.matrix([1,2,3]).transpose()
我的目标是从x创建一个列表y,这样y = [1, 2, 3]
我尝试过使用tolist()
方法,但是它返回[[1], [2], [3]]
,这不是我想要的结果。
y = [xi for xi in x.flat]
但是它有点麻烦,而且我不确定是否有更简单的方法来实现相同的结果。
谢谢
3条答案
按热度按时间f45qwnt81#
一个问题来回答你的问题
Sven和Navi已经回答了您关于如何转换
我会在回答之前先问一个问题:
使用数组代替矩阵
如果你查看Numpy for Matlab用户wiki/文档页面,第3节讨论了 “array”或“matrix”?我应该使用哪个?。简短的答案是你应该使用array。
使用数组的优点之一是:
可以将秩为1的数组视为行向量或列向量。dot(A,v)将v视为列向量,而dot(v,A)将v视为行向量。这可以保存您输入大量转置的时间。
此外,如Numpy参考文档中所述,“Matrix对象始终是二维的”。这就是
x.tolist()
为您返回[[1], [2], [3]]
嵌套列表的原因。由于您需要一个Nx 1对象,我建议您使用数组,如下所示:
如果你真的想使用矩阵
如果出于某种原因,您确实需要/希望使用矩阵而不是数组,我会这样做:
换言之,
x.T.tolist()[0]
将:1.使用
.T
属性转置x矩阵1.使用
.tolist()
将转置矩阵转换为嵌套列表1.使用
[0]
获取嵌套列表的第一个元素khbbv19g2#
不如
或
i2byvkas3#
我想你快到了,使用展平函数http://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.flatten.html