2017-08-31 102 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

相关问题