Numpy - 列表的asarray,维度不会自动设置在向量中

时间:2013-04-24 18:48:47

标签: python numpy

我有一个数字列表

l = [ 1 , 3, 5]

我想将它转换为numpy数组向量

import numpy as np
vec = np.asarray(l)

但vec的尺寸没有设定

vec.shape
Answer: (3,)

我知道我能做到

vec.shape = (vec.shape[0], 1)

但是有没有更快,更短的方法将第二个维度设置为一个?

2 个答案:

答案 0 :(得分:3)

>>> vec = np.asarray(l).reshape((1,-1)) 
>>> vec.shape
(1, 3)

我认为你想要的......也许

答案 1 :(得分:1)

我认为更简单的方法(对我而言)是使用np.newaxis

a = np.array([1,3,5])
a.shape
#(3,)

b = a[np.newaxis,...]
print b
#[[1, 3, 4]]

b.shape
#(1, 3)

但这不是列矢量......,也许你想要:

c = a[...,np.newaxis]
print c
#[[1],
# [3],
# [4]]

c.shape
#(3, 1)

您也可以在任何想要新轴的地方使用None代替np.newaxis

a[...,None]
#[[1],
# [3],
# [4]]