如何垂直拆分数组并将一列添加到每个拆分数组

时间:2019-05-14 14:39:57

标签: python numpy

我想在数组下面分割

A = 
[[0.45 + 0j, 1 - 2j, 3 - 4j, 5 + 6j, 7 + 8j, 9 - 10j, 11 - 12j, 13 + 14j, 15 + 16j, 17 - 18j, 19 - 20j, 21. - 22j, 23 - 24j],
 [0.45 + 0j, 1 - 2j, 3 - 4j, 5 + 6j, 7 + 8j, 9 - 10j, 11 - 12j, 13 + 14j, 15 + 16j, 17 - 18j, 19 - 20j, 21. - 22j, 23 - 24j],
 [0.45 + 0j, 1 - 2j, 3 - 4j, 5 + 6j, 7 + 8j, 9 - 10j, 11 - 12j, 13 + 14j, 15 + 16j, 17 - 18j, 19 - 20j, 21. - 22j, 23 - 24j],
 [0.45 + 0j, 1 - 2j, 3 - 4j, 5 + 6j, 7 + 8j, 9 - 10j, 11 - 12j, 13 + 14j, 15 + 16j, 17 - 18j, 19 - 20j, 21. - 22j, 23 - 24j],
 [0.45 + 0j, 1 - 2j, 3 - 4j, 5 + 6j, 7 + 8j, 9 - 10j, 11 - 12j, 13 + 14j, 15 + 16j, 17 - 18j, 19 - 20j, 21. - 22j, 23 - 24j]]

进入

B = 
[[[1, 3, 5, 7, 9 , 11, 13, 15, 17, 19, 21, 23],
  [2, 4, 6, 8, 10, 12, 14, 16,  18, 20, 22, 24]],
 [[1, 3, 5, 7, 9 , 11, 13, 15, 17, 19, 21, 23],
  [2, 4, 6, 8, 10, 12, 14, 16,  18, 20, 22, 24]],
 [[1, 3, 5, 7, 9 , 11, 13, 15, 17, 19, 21, 23],
  [2, 4, 6, 8, 10, 12, 14, 16,  18, 20, 22, 24]],
 [[1, 3, 5, 7, 9 , 11, 13, 15, 17, 19, 21, 23],
  [2, 4, 6, 8, 10, 12, 14, 16,  18, 20, 22, 24]],
 [[1, 3, 5, 7, 9 , 11, 13, 15, 17, 19, 21, 23],
  [2, 4, 6, 8, 10, 12, 14, 16,  18, 20, 22, 24]]]

然后在数组下面添加

R = [0.1, 0.2, 0.3, 0.4, 0.5]

如下所示

C = 
[[[0.1, 1, 3, 5, 7, 9 , 11, 13, 15, 17, 19, 21, 23],
  [0.0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24]],
 [[0.2, 1, 3, 5, 7, 9 , 11, 13, 15, 17, 19, 21, 23],
  [0.0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24]],
 [[0.3, 1, 3, 5, 7, 9 , 11, 13, 15, 17, 19, 21, 23],
  [0.0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24]],
 [[0.4, 1, 3, 5, 7, 9 , 11, 13, 15, 17, 19, 21, 23],
  [0.0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24]],
 [[0.5, 1, 3, 5, 7, 9 , 11, 13, 15, 17, 19, 21, 23],
  [0.0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24]]]

我只想使用numpy库。

我已经尝试过以下功能,但没有帮助

索引分离     hsplit     对比     分裂     重塑     邮编

喜欢分裂的尝试

A = np.vsplit(A,5)
A = np.array(A)

A = np.hsplit(A,5)
A = np.array(A)

A = np.reshape(-1,A,5)
A = np.array(A)

A = np.reshape(A,5,-1)
A = np.array(A)

添加零件更容易,因为我使用了复杂的概念,并且可以添加...

如果您有使用其他功能的想法? 我只需要一个线索,我自己写代码!

1 个答案:

答案 0 :(得分:0)

这是一种方法:

A = np.array([[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 
              [11, 22, 33, 44, 55, 66, 77, 88, 99, 1010]])
R = [0.1, 0.2, 0.3, 0.4, 0.5]

让我们从重塑和转置A开始,以便与指定的预期输出中的结构匹配:

A = A.T.reshape(-1, 2, 2).transpose(0,2,1)

print(A)

[[[   1    2]
  [  11   22]]

 [[   3    4]
  [  33   44]]

 [[   5    6]
  [  55   66]]

 [[   7    8]
  [  77   88]]

 [[   9   10]
  [  99 1010]]]

现在,我们可以使用np.column_stack0s的新列堆叠到R,然后使用np.dstack将它的深度堆叠到重塑的{{1} }:

A

R = np.column_stack([R, np.zeros(len(R))])
C = np.dstack([R,A])