2017-08-31 101 views
1

假設你有一個具有相同大小的2個維數組 a=[1,8,4,5,9] b=[1,8,4,5,9] ,然後在A和B每一個第i個元素,你能做出一個新的數組這樣,

其中H是矩陣的矩陣和H(i)堆疊在第三維?使在第三維新的二維數組一維數組的每一個元素,pythonically

我已經嘗試使用numpys np.dstack,但它似乎像對待每個新元素單獨輸入。
用for循環做這件事很簡單,但我相信它們在python中很慢,因此希望以pythonic的方式做到這一點,如果可能的話用numpy。

因此然後H[0]我們將有[[1,16,16],[1,7,1],[1,4,2]]
,同樣爲H[1]我們將有[[64,16,16],[64,56,64],[8,32,16]]

+0

您可以張貼真正預期的結果,而不是圖像? – RomanPerekhrest

+0

添加了預期結果。希望有幫助。 – Alex

+0

您能否澄清您是否在尋找可以使用numpy的解決方案,或者您是否希望不導入? –

回答

1

使用column_stack堆放的計算結果,然後reshape

a=np.array([1,8,4,5,9]) 
b=np.array([1,8,4,5,9]) 
​ 
np.column_stack((
    a ** 2, 2 * a, 2 * a, 
    b * a, 7 * a, b * a, 
    b,  4 * b, 2 * b 
)).reshape(-1,3,3) 

Out[468]: 
array([[[ 1, 2, 2], 
     [ 1, 7, 1], 
     [ 1, 4, 2]], 

     [[64, 16, 16], 
     [64, 56, 64], 
     [ 8, 32, 16]], 

     [[16, 8, 8], 
     [16, 28, 16], 
     [ 4, 16, 8]], 

     [[25, 10, 10], 
     [25, 35, 25], 
     [ 5, 20, 10]], 

     [[81, 18, 18], 
     [81, 63, 81], 
     [ 9, 36, 18]]]) 
+1

這很漂亮。它幾乎是一個班輪,而不是一個循環式的迭代。 – Alex

相關問題