У меня есть объект типа 'numpy.ndarray', называемый "myarray", который при выводе на экран с использованием "print" в python выглядит как хиты
[[[ 84 0 213 232] [153 0 304 363]]
[[ 33 0 56 104] [ 83 0 77 238]]
[[ 0 0 9 61] [ 0 0 2 74]]]
"myarray" сделан другой библиотекой. Значение myarray.shape
равно (3, 2). Я ожидал, что это будет трехмерный массив с тремя индексами. Когда я пытаюсь сделать эту структуру самостоятельно, используя:
second_array = array([[[84, 0, 213, 232], [153, 0, 304, 363]],
[[33, 0, 56, 104], [83, 0, 77, 238]],
[[0, 0, 9, 61], [0, 0, 2, 74]]])
Я понял, что second_array.shape
равно (3, 2, 4)
, как и ожидалось. Почему эта разница? Кроме того, учитывая это, как я могу изменить форму «myarray», чтобы два столбца были объединены, то есть, чтобы в результате получилось:
[[[ 84 0 213 232 153 0 304 363]]
[[ 33 0 56 104 83 0 77 238]]
[[ 0 0 9 61 0 0 2 74]]]
Редактировать: , чтобы уточнить, я знаю, что в случае second_array
я могу сделать second_array.reshape((3,8))
. Но как это работает для ndarray, который имеет формат myarray
, но не имеет трехмерного индекса?
myarray.dtype
- это "object
", но его можно изменить и на ndarray.
Редактировать 2 : приближается, но все еще не может получить ravel
/ flatten
с последующим изменением формы. У меня есть:
a = array([[1, 2, 3],
[4, 5, 6]])
b = array([[ 7, 8, 9],
[10, 11, 12]])
arr = array([a, b])
Я пытаюсь:
arr.ravel().reshape((2,6))
Но это дает [[1, 2, 3, 4, 5, 6], ...]
, а я хотел [[1, 2, 3, 7, 8, 9], ...]
. Как это можно сделать?
спасибо.