С Numpy, как превратить данный 3D-массив в массив матриц 3х3 - PullRequest
0 голосов
/ 10 ноября 2019

Я учу Numpy в данный момент, и я пытаюсь обернуть голову вокруг Reshaping. У меня есть 3D-массив, который выглядит следующим образом (значения случайные, но форма важна):

[[[37. 56. 56. 54. 82. 85. 68. 46.  6.]]

[[96. 20. 53. 52. 79. 94. 59. 29. 40.]]

[[57. 59. 38. 53. 88. 96. 61. 62. 48.]]

[[32. 92. 56. 52. 74. 12. 63. 58. 81.]]

[[16. 89. 24. 26. 33. 82. 80. 66. 89.]]]

, и я хочу превратить его в массив таких матриц 3х3:

[[[37. 56. 56.]
  [54. 82. 85.]
  [68. 46.  6.]]

 [[96. 20. 53.]
  [52. 79. 94.]
  [59. 29. 40.]]

 [[57. 59. 38.]
  [53. 88. 96.]
  [61. 62. 48.]]

 [[32. 92. 56.]
  [52. 74. 12.]
  [63. 58. 81.]]

 [[16. 89. 24.]
  [26. 33. 82.]
  [80. 66. 89.]]]

Если бы я все правильно понял до сих пор, это должно быть возможно с numpy.reshape, но я не заставлю его работатьМожет ли кто-нибудь указать мне правильное направление?

1 Ответ

1 голос
/ 10 ноября 2019

Вам необходимо изменить форму массива. Если посмотреть на тот, который у вас есть в данный момент, это (5, 1, 9): 5 элементов в измерении верхнего уровня, каждый элемент представляет собой массив формы (1, 9).

Теперь вы хотите иметьтакое же количество элементов верхнего уровня (думаю, строк), но внутри массивов формы (3, 3), поэтому вам нужно вызвать:

your_array.reshape((5, 3, 3))

В numpy docs выможет найти примеры использования и важную информацию о поведении, например, когда он будет возвращать представление и когда копия.

...