如何从列表中创建一个numpy数组([1.],[2.],[3。] ...)?

时间:2016-07-14 23:12:47

标签: python numpy

我正在尝试从列表([1.], [2.], ...)中创建[1, 2, 3]形式的numpy数组,以便我可以将其用作sklearn's linear_model的输入。

此命令

np.array(test_list)

生成这种数组:

array([1, 2, 3, 4])

而我想要

array ([1], [2], [3], [4])

4 个答案:

答案 0 :(得分:2)

您可以插入新轴并进行转置:

>>> arr = np.array([1, 2, 3, 4], dtype=float)
>>> arr[None, ...].T
array([[1.],
       [2.],
       [3.],
       [4.]])

与大多数事情numpy一样,这可能是一种更好的方法,但这项工作正常: - )。

或者,正如评论中指出的那样,您只需在正确的位置插入一个轴:

>>> arr[..., None]
array([[ 1.],
       [ 2.],
       [ 3.],
       [ 4.]])

请注意,如果您发现语义更正确,可以将None写为np.newaxis

答案 1 :(得分:2)

+1给mgilson的回答。这是另一种方式:

arr = np.array([np.array([float(i)]) for i in test_list])

答案 2 :(得分:2)

你可以重塑:

 import  numpy as np

arr = np.array([1, 2, 3, 4, 5])

print(arr.reshape(arr.size, 1).astype(float))

哪会给你:

[[ 1.]
[ 2.]
[ 3.]
[ 4.]
[ 5.]]

答案 3 :(得分:1)

你也可以使用NumPy的atleast_2d并转置:

In [270]: np.atleast_2d([1, 2, 3, 4, 5]).T.astype(float)
Out[270]: 
array([[ 1.],
       [ 2.],
       [ 3.],
       [ 4.],
       [ 5.]])