3 ответов:
посмотри numpy.изменить форму .
>>> arr = numpy.zeros((50,100,25)) >>> arr.shape # (50, 100, 25) >>> new_arr = arr.reshape(5000,25) >>> new_arr.shape # (5000, 25) # One shape dimension can be -1. # In this case, the value is inferred from # the length of the array and remaining dimensions. >>> another_arr = arr.reshape(-1, arr.shape[-1]) >>> another_arr.shape # (5000, 25)
небольшое обобщение к ответу Александра-np.reshape может принимать в качестве аргумента -1, что означает "общий размер массива, разделенный на произведение всех других перечисленных измерений":
например, чтобы сгладить все, кроме последнего измерения:
>>> arr = numpy.zeros((50,100,25)) >>> new_arr = arr.reshape(-1, arr.shape[-1]) >>> new_arr.shape # (5000, 25)
небольшое обобщение к ответу Питера - вы можете указать диапазон по форме исходного массива, если вы хотите выйти за пределы трехмерных массивов.
например, чтобы сгладить все, кроме последнего два размеры:
arr = numpy.zeros((3, 4, 5, 6)) new_arr = arr.reshape(-1, *arr.shape[-2:]) new_arr.shape # (12, 5, 6)EDIT: небольшое обобщение к моему более раннему ответу - вы можете, конечно, также указать диапазон в начале формы тоже:
arr = numpy.zeros((3, 4, 5, 6, 7, 8)) new_arr = arr.reshape(*arr.shape[:2], -1, *arr.shape[-2:]) new_arr.shape # (3, 4, 30, 7, 8)
Comments