【问题标题】:Python - Concatenate or stack more than two arrays with different shapePython - 连接或堆叠两个以上不同形状的数组
【发布时间】:2018-06-19 09:31:26
【问题描述】:

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

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

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

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

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

非常感谢!

【问题讨论】:

  • 为什么说连接不是最优的?处理需要很长时间吗?还是处理不方便?
  • 从某种意义上说,我必须先初始化 9 个子数组,然后像 X = np.concatenate(CC,AC) 然后 X = np.concatenate(X,BC) 等连接...
  • 我不明白这里的近距离投票,这个问题似乎很明显“关于帮助中心定义的范围内的编程”。这个问题肯定会从示例代码中受益,但是......这是值得评论的,而不是结束。

标签: python arrays numpy stack concatenation


【解决方案1】:

你想要np.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.]])

【讨论】:

    猜你喜欢
    • 2019-10-02
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    • 2021-03-06
    • 1970-01-01
    • 2012-09-11
    • 2022-12-10
    相关资源
    最近更新 更多