2013-10-23 64 views
1

我在python是新的,有一個基本的問題,一個3D的Python數組:使得從三個一維數組

我有兩個列表:

a = [1, 2, 3] 
b = [2, 4, 5] 
c = [5, 7, 8] 

我要的是一個數組,看起來像:

x = np.array([1,2,5],[2,4,7],[5,7,8]) 

有沒有一些在線蟒蛇技巧做到這一點?

+2

這是一個二維數組... – Doorknob

+0

三維陣列,你的意思是你想有一個3×3 [矩陣](http://en.wikipedia.org/wiki/Matrix_(數學))? – thegrinner

+0

你的意思是2D陣列嗎? –

回答

2

嘗試zip(a, b, c),e.g,x = np.array(*zip(a, b, c))Official Docs

+0

這個作品...非常簡單:)謝謝 – Panchi

+1

當數組很大時,使用純numpy解決方案'vstack'可能會更快由Matti顯示,而不是使用內置的「zip」。 –

+0

@BasSwinckels +1不是一個numpy用戶,但從我聽到的我不會懷疑它:) – DanielB

5
np.vstack((np.array([1,2,3]), np.array([1,2,3]), np.array([1,2,3]))) 

或者也可以簡單

np.vstack(([1,2,3], [1,2,3], [1,2,3])) 
+0

完美:)我正在學習新的好花樣! – Panchi

2

另一個簡單的方法是使用其中.T的轉置矩陣。

import numpy as np 

a = [1, 2, 3] 
b = [2, 4, 5] 
c = [5, 7, 8] 

np.array([a,b,c]).T 

array([[1, 2, 5], 
     [2, 4, 7], 
     [3, 5, 8]]) 
+0

這是非常優雅:)我想出了'np.array([a,b,c])',但不知道我們可以用'.T'找到它的轉置:)謝謝你的分享訣竅 – Panchi

+0

很高興幫助! Numpy有一些很棒的小優雅技巧:) –