Python 从给定数组创建块数组
我有一个这样的2d数组Python 从给定数组创建块数组,python,arrays,numpy,Python,Arrays,Numpy,我有一个这样的2d数组 A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) B = np.array([[1, 1, 2, 2, 3, 3], [1, 1, 2, 2, 3, 3], [..., ..., ...,], [..., 8, 8, 9, 9], [..., 8, 8,
A = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
B = np.array([[1, 1, 2, 2, 3, 3],
[1, 1, 2, 2, 3, 3],
[..., ..., ...,],
[..., 8, 8, 9, 9],
[..., 8, 8, 9, 9]])
我想创建一个数组,上面的每个条目都会填充新数组的整个块。也就是说,如果我想要2x2块,我希望我的新阵列看起来像这样
A = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
B = np.array([[1, 1, 2, 2, 3, 3],
[1, 1, 2, 2, 3, 3],
[..., ..., ...,],
[..., 8, 8, 9, 9],
[..., 8, 8, 9, 9]])
我通过迭代数组并为每个条目创建相应的块来实现这一点,但我想知道是否有更好的方法来实现这一点
A.repeat(2, axis=1).repeat(2, axis=0)
首先沿第一个轴移动元素以获得:
array([[1, 1, 2, 2, 3, 3],
[4, 4, 5, 5, 6, 6],
[7, 7, 8, 8, 9, 9]])
array([[1, 1, 2, 2, 3, 3],
[1, 1, 2, 2, 3, 3],
[4, 4, 5, 5, 6, 6],
[4, 4, 5, 5, 6, 6],
[7, 7, 8, 8, 9, 9],
[7, 7, 8, 8, 9, 9]])
然后沿第零轴重复这些元素,以获得:
array([[1, 1, 2, 2, 3, 3],
[4, 4, 5, 5, 6, 6],
[7, 7, 8, 8, 9, 9]])
array([[1, 1, 2, 2, 3, 3],
[1, 1, 2, 2, 3, 3],
[4, 4, 5, 5, 6, 6],
[4, 4, 5, 5, 6, 6],
[7, 7, 8, 8, 9, 9],
[7, 7, 8, 8, 9, 9]])
(重复轴的顺序无关紧要。)
您可以将2
s更改为所需的块大小
首先沿第一个轴移动元素以获得:
array([[1, 1, 2, 2, 3, 3],
[4, 4, 5, 5, 6, 6],
[7, 7, 8, 8, 9, 9]])
array([[1, 1, 2, 2, 3, 3],
[1, 1, 2, 2, 3, 3],
[4, 4, 5, 5, 6, 6],
[4, 4, 5, 5, 6, 6],
[7, 7, 8, 8, 9, 9],
[7, 7, 8, 8, 9, 9]])
然后沿第零轴重复这些元素,以获得:
array([[1, 1, 2, 2, 3, 3],
[4, 4, 5, 5, 6, 6],
[7, 7, 8, 8, 9, 9]])
array([[1, 1, 2, 2, 3, 3],
[1, 1, 2, 2, 3, 3],
[4, 4, 5, 5, 6, 6],
[4, 4, 5, 5, 6, 6],
[7, 7, 8, 8, 9, 9],
[7, 7, 8, 8, 9, 9]])
(重复轴的顺序无关紧要。)
您可以将2
s更改为所需的块大小