Как сгладить только некоторые размеры массива numpy



есть ли быстрый способ "сгладить" или сгладить только некоторые из первых измерений в массиве numpy?



например, учитывая массив NumPy измерений (50,100,25) полученные размеры будут (5000,25)

551   3  

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

    Ничего не найдено.