Python - 连接或堆叠两个以上不同形状的数组

标签 python arrays numpy stack concatenation

我想得到一个大小为 11x11 且具有不同子数组的数组,例如由以下数组组成的数组 M(括号中的形状):

CC(3x3) CA(3x4) CB(3x4)

AC(4x3) AA(4x4) AB(4x4)

BC(4x3) BA(4x4) BB(4x4)

我可以使用连接,但它不是最佳的。我也尝试了堆栈函数,但数组必须具有相同的形状。你有什么想法去做吗?

非常感谢!

最佳答案

你想要np.block() 。它用“ block ”创建一个数组,就像你所拥有的那样。例如

>>> CC = 1*np.ones((3, 3))
>>> CA = 2*np.ones((3, 4))
>>> CB = 3*np.ones((3, 4))
>>> AC = 4*np.ones((4, 3))
>>> AA = 5*np.ones((4, 4))
>>> AB = 6*np.ones((4, 4))
>>> BC = 7*np.ones((4, 3))
>>> BA = 8*np.ones((4, 4))
>>> BB = 9*np.ones((4, 4))
>>> M = np.block([[CC, CA, CB],
                  [AC, AA, AB],
                  [BC, BA, BB]])
>>> M
array([[ 1.,  1.,  1.,  2.,  2.,  2.,  2.,  3.,  3.,  3.,  3.],
       [ 1.,  1.,  1.,  2.,  2.,  2.,  2.,  3.,  3.,  3.,  3.],
       [ 1.,  1.,  1.,  2.,  2.,  2.,  2.,  3.,  3.,  3.,  3.],
       [ 4.,  4.,  4.,  5.,  5.,  5.,  5.,  6.,  6.,  6.,  6.],
       [ 4.,  4.,  4.,  5.,  5.,  5.,  5.,  6.,  6.,  6.,  6.],
       [ 4.,  4.,  4.,  5.,  5.,  5.,  5.,  6.,  6.,  6.,  6.],
       [ 4.,  4.,  4.,  5.,  5.,  5.,  5.,  6.,  6.,  6.,  6.],
       [ 7.,  7.,  7.,  8.,  8.,  8.,  8.,  9.,  9.,  9.,  9.],
       [ 7.,  7.,  7.,  8.,  8.,  8.,  8.,  9.,  9.,  9.,  9.],
       [ 7.,  7.,  7.,  8.,  8.,  8.,  8.,  9.,  9.,  9.,  9.],
       [ 7.,  7.,  7.,  8.,  8.,  8.,  8.,  9.,  9.,  9.,  9.]])

关于Python - 连接或堆叠两个以上不同形状的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48183584/

相关文章:

python - 围绕 Python 函数制作 Cython 包装器

javascript - 在javascript中用随机数填充二维数组

java - 有没有办法将不断变化的数组重复传递给 Java Canvas 并让它更新屏幕?

python - 使用 gdal 将数组转换为 tiff 光栅图像

python - 如何让一个曲面通过四个点,求相邻点在曲面上的投影

python - 为什么 pandas 在日期索引表中查找日期时会生成 KeyError?

python - 关闭无限异步生成器

python - Hello World - Flask/Apache/mod_wsgi - Apache 没有响应

python - 从 GAE 数据存储区删除数据时出现错误 : AttributeError: 'list' object has no attribute 'fetch'

c++ - 类成员函数执行时程序停止工作