как разделить массив по вертикали и добавить один столбец в каждый из разделенных массивов - PullRequest
0 голосов
/ 14 мая 2019

Я хочу разбить массив под

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 vsplit split reshape zip

испытания, напримердля разделения

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 голосов
/ 14 мая 2019

Вот один из способов:

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_stack, чтобы сложить новый столбец от 0s до R, а затем np.dstack, чтобы сложить его по глубине до измененного A:

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

print(C)

array([[[   0.1,    1. ,    2. ],
        [   0. ,   11. ,   22. ]],

       [[   0.2,    3. ,    4. ],
        [   0. ,   33. ,   44. ]],

       [[   0.3,    5. ,    6. ],
        [   0. ,   55. ,   66. ]],

       [[   0.4,    7. ,    8. ],
        [   0. ,   77. ,   88. ]],

       [[   0.5,    9. ,   10. ],
        [   0. ,   99. , 1010. ]]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...