#python #numpy #flatten
Вопрос:
У меня есть массив numpy X
, который имеет (2 , 2 , 3)
такую форму:
X = [[[1 , 2 , 3 ]
[4 , 5 , 6]] ,
[[7 , 8 , 9 ]
[10, 11, 12 ]],
Я хочу выровнять все подмолоски и превратить X в форму (2 , 6), которая представлена следующим образом:
X = [[ 1 , 2 , 3 , 4, 5 , 6 ] ,
[ 7 , 8 , 9 , 10, 11 , 12 ] ]
Но когда я использовал X.flatten()
, это просто оказалось так:
X = [ 1 , 2, 3, 4 , 5, ... , 12]
Есть ли какая-либо функция, которая поможет мне преобразовать массив так, как я имею в виду.
Ответ №1:
Просто reshape
….
import numpy as np
arr = np.array([[[1 , 2 , 3 ],
[4 , 5 , 6]],
[[7 , 8 , 9 ],
[10, 11, 12 ]]])
arr.reshape(2, 6)
Результат:
array([[ 1, 2, 3, 4, 5, 6],
[ 7, 8, 9, 10, 11, 12]])
Ответ №2:
Выполните итерацию по массиву и выровняйте подсписки
arr = np.array([x.flatten() for x in X])
Или для решения numpy вы также можете использовать np.hstack()
arr = np.hstack(X)
Выход
print(arr)
#[[ 1 2 3 4 5 6]
# [ 7 8 9 10 11 12]]
Комментарии:
1. Да, я знаю это, но я прошу модуль, который может выполнить это немедленно, без необходимости перебирать все подмножества, пожалуйста.
Ответ №3:
Пройдите по массиву и выровняйте подкомпоненты:
x = np.array([[[1,2],[3,4]], [[5,6],[7,8]]])
y = np.array([i.flatten() for i in x])
print(x)
print(y)
[[[1 2]
[3 4]]
[[5 6]
[7 8]]]
[[1 2 3 4]
[5 6 7 8]]
Ответ №4:
Если это массив numpy, вы можете использовать reshape
x.reshape(2,6)
Ввод:
x = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]]
x.reshape(2,6)
Выход:
array([[ 1, 2, 3, 4, 5, 6],
[ 7, 8, 9, 10, 11, 12]])