Python将列表转换为2D numpy数组

6

我有一些列表,想将它们转换为二维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数组。

3个回答

6

一种方法是创建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]]

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]])

创建一个反向维度的副本,可以使用任何方法来实现transpose - FindOutIslamNow

4

你也可以像这样使用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]])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接