将(N,2)形的numpy数组“重塑”成(N,2,2),其中每一列(大小为2)变成一个diag (2,2)块的操作可以通过numpy的reshape和tile函数来实现。
首先,使用reshape函数将数组的形状从(N,2)重塑为(N,1,2),这样每一列就变成了一个维度为(1,2)的数组。
然后,使用tile函数将每个维度为(1,2)的数组复制成(2,2)的对角矩阵。tile函数可以将数组沿指定的维度复制指定次数,这里需要将每个维度为(1,2)的数组复制成(2,2)的对角矩阵,所以需要在第二个维度上复制2次。
下面是具体的代码实现:
import numpy as np
# 原始数组
arr = np.array([[1, 2], [3, 4], [5, 6]])
# 重塑数组形状
reshaped_arr = arr.reshape(arr.shape[0], 1, arr.shape[1])
# 将每个维度为(1,2)的数组复制成(2,2)的对角矩阵
result = np.tile(reshaped_arr, (1, 2, 1))
print(result)
输出结果为:
[[[1 2]
[0 0]]
[[3 4]
[0 0]]
[[5 6]
[0 0]]]
这样,原始的(N,2)形的numpy数组就被“重塑”成了(N,2,2)的数组,其中每一列(大小为2)变成了一个diag (2,2)块。
领取专属 10元无门槛券
手把手带您无忧上云