我正在尝试从列表([1.], [2.], ...)
中创建[1, 2, 3]
形式的numpy数组,以便我可以将其用作sklearn's linear_model
的输入。
此命令
np.array(test_list)
生成这种数组:
array([1, 2, 3, 4])
而我想要
array ([1], [2], [3], [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.]])