簡體   English   中英

如何從python中的列表創建矩陣或二維列表?

[英]How to create matrix or 2d list from lists in python?

我有3個清單

> a= ones((10,1))
> 
> 
>  x_1=[1,2,3,4...,10] (i.e. list of 10 elements)
> 
>  y_1=[2,1,4,7,2,..20] (list of 10 elements)

我想加入這3個列表,使其成為2d列表或矩陣,如下所示:

> mat=[a x_1 y_1]

就像在MATLAB中,其中a將是1列x_1第二列和y_1第三列。

> mat= [[1,1,2],[1,2,1],[1,3,4],[]......[]]

我試過了

> np.matrix([[a,[[i] for i in x_1],[[i] for i in y_1]]])

但是它給出了一個錯誤,因為矩陣必須是2維

我怎樣才能做到這一點 ?

另外,如果我有二維數組

>  a=np.ones((3,2))
> 
> x_1=[[1,2],[2,3],[2,4]]
> 
> y_1=[[3,4],[5,6],[3,4]]

然后我如何連接這些數組,並使其成為

> c=[[1,1,2,3,4],[1,2,3,5,6],[1,2,4,3,4]]

在matlab中,它寫為:

> c=[a,x_1,y_1]

我也該怎么做?

python中的2D列表與MATLAB中的2D列表不同!

如果我有兩個清單

A = ["red", "green", "blue"]
B = ["orange", "yellow", "purple"]

我想從這兩個列表中創建一個2D列表,我可以這樣寫:

C = [A, B]

然后,C等於[[“紅色”,“綠色”,“藍色”],[“橙色”,“黃色”,“紫色”]]

我可以訪問C的元素,例如:

C[0][1]
>> "red"
C[1][2]
>> "purple"
C[0]
>> ["red", "green", "blue"]

為了回答您的特定問題,您具有列表x_1和y_1,並且要創建一個包含x_1和y_1的二維列表。 你可以寫

mat = [x_1 y_1]

此列表將為2x10。 您想轉置此列表,因此您應該可以使用zip來執行以下操作:

mat = map(list, zip(*mat))

如果要保留在“標准” Python(無numpy )中, numpy獲取轉置的2D列表,可以執行以下操作:

mat = [p for p in zip(a, x_1, y_1)]

如果仍然需要一個numpy數組,則:

import numpy as np
mat = np.array([a, x_1, y_1]).T

注意:在上面的示例中,如果需要, np.arraynp.matrix替換np.array

如果您a數組是2D數組,例如np.ones((10,1))np.ones((10,3))則可以在numpy使用* stack()函數之一:

mat = np.vstack([np.asarray(a).T, x_1, y_1]).T

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM