Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从给定数组创建块数组_Python_Arrays_Numpy - Fatal编程技术网

Python 从给定数组创建块数组

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,

我有一个这样的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, 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更改为所需的块大小