假设您有两个大小相同的1D阵列
a=[1,8,4,5,9]
b=[1,8,4,5,9]
然后对于a和b中的每个第i个元素,你能创建一个新的数组吗?
其中H是矩阵矩阵,H(i)以第三维堆叠?
我尝试过使用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 :(得分: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]]])