我有一些列表要转换为2D numpy数组。
list1 = [ 2, 7 , 8 , 5]
list2 = [18 ,29, 44,33]
list3 = [2.3, 4.6, 8.9, 7.7]
我想要的numpy数组是:
[[ 2. 18. 2.3]
[ 7. 29. 4.6]
[ 8. 44. 8.9]
[ 5. 33. 7.7]]
我可以通过将列表中的各个项目直接键入numpy数组表达式np.array(([2,18,2.3], [7,29, 4.6], [8,44,8.9], [5,33,7.7]), dtype=float)
来获得。
但我希望能够将列表转换为所需的numpy数组。
答案 0 :(得分:4)
一种方法是创建numpy
数组,然后使用转置函数将其转换为所需的输出:
import numpy as np
list1 = [ 2, 7 , 8 , 5]
list2 = [18 ,29, 44,33]
list3 = [2.3, 4.6, 8.9, 7.7]
arr = np.array([list1, list2, list3])
arr = arr.T
print(arr)
<强>输出强>
[[ 2. 18. 2.3]
[ 7. 29. 4.6]
[ 8. 44. 8.9]
[ 5. 33. 7.7]]
答案 1 :(得分:4)
您可以直接使用np.transpose
:
np.transpose([list1, list2, list3])
这会将您的列表列表转换为numpy数组并将其转置(将行更改为列,将行更改为行):
array([[ 2. , 18. , 2.3],
[ 7. , 29. , 4.6],
[ 8. , 44. , 8.9],
[ 5. , 33. , 7.7]])
答案 2 :(得分:3)
您也可以使用zip
这样的功能
In [1]: import numpy as np
In [2]: list1 = [ 2, 7 , 8 , 5]
In [3]: list2 = [18 ,29, 44,33]
In [4]: list3 = [2.3, 4.6, 8.9, 7.7]
In [5]: np.array(zip(list1,list2,list3))
Out[5]:
array([[ 2. , 18. , 2.3],
[ 7. , 29. , 4.6],
[ 8. , 44. , 8.9],
[ 5. , 33. , 7.7]])