Учебник по NumPy

ГЛАВНАЯ Введение в NumPy Начало работы с NumPy NumPy Создание массивов Индексация массива NumPy Нарезка массива NumPy Типы данных NumPy Копирование NumPy против просмотра Форма массива NumPy Изменение формы массива NumPy Итерация массива NumPy Объединение массивов NumPy Разделение массива NumPy Поиск массива NumPy Сортировка массива NumPy Фильтр массива NumPy

NumPy Случайный

Случайное вступление Распределение данных Случайная перестановка Морской модуль Нормальное распределение Биномиальное распределение Распределение рыбы Равномерное распределение Логистическая дистрибуция Полиномиальное распределение Экспоненциальное распределение Распределение площади Чи Рэлеевское распределение Распределение Парето Распределение Zipf

NumPy ufunc

Введение ufunc Создать функцию ufunc Простая арифметика ufunc Округление десятичных знаков Журналы UFUNC ufunc Суммирование продукты ufunc Отличия ufunc ufunc Поиск LCM ufunc Поиск НОД ufunc Тригонометрический ufunc Гиперболический ufunc набор операций

Викторина/Упражнения

Викторина NumPy NumPy-упражнения

Изменение формы массива NumPy


Изменение формы массивов

Изменение формы означает изменение формы массива.

Форма массива — это количество элементов в каждом измерении.

Изменяя форму, мы можем добавлять или удалять измерения или изменять количество элементов в каждом измерении.


Изменить форму с 1-D на 2-D

Пример

Преобразуйте следующий одномерный массив с 12 элементами в двумерный массив.

Самое внешнее измерение будет иметь 4 массива, каждый из которых состоит из 3 элементов:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

newarr = arr.reshape(4, 3)

print(newarr)

Изменить форму с 1-D на 3-D

Пример

Преобразуйте следующий одномерный массив с 12 элементами в трехмерный массив.

Самое внешнее измерение будет иметь 2 массива, которые содержат 3 массива, каждый из которых содержит 2 элемента:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

newarr = arr.reshape(2, 3, 2)

print(newarr)


Можем ли мы измениться в любую форму?

Да, если элементы, необходимые для изменения формы, одинаковы в обеих формах.

Мы можем преобразовать 8-элементный одномерный массив в 4 элемента в 2-строчном 2D-массиве, но мы не можем преобразовать его в 3-элементный 3-строчный 2D-массив, поскольку для этого потребуется 3x3 = 9 элементов.

Пример

Попробуйте преобразовать 1D-массив с 8 элементами в 2D-массив с 3 элементами в каждом измерении (вызовет ошибку):

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])

newarr = arr.reshape(3, 3)

print(newarr)

Возвращает копирование или просмотр?

Пример

Проверьте, является ли возвращаемый массив копией или представлением:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])

print(arr.reshape(2, 4).base)

Приведенный выше пример возвращает исходный массив, поэтому это представление.


Неизвестное измерение

Вам разрешено иметь одно «неизвестное» измерение.

Это означает, что вам не нужно указывать точное число для одного из измерений в методе изменения формы.

Передайте -1в качестве значения, и NumPy рассчитает это число для вас.

Пример

Преобразование массива 1D с 8 элементами в массив 3D с элементами 2x2:

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])

newarr = arr.reshape(2, 2, -1)

print(newarr)

Примечание: мы не можем перейти -1к более чем одному измерению.


Сведение массивов

Сведение массива означает преобразование многомерного массива в одномерный массив.

Мы можем использовать reshape(-1)для этого.

Пример

Преобразуйте массив в одномерный массив:

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])

newarr = arr.reshape(-1)

print(newarr)

Примечание. Существует множество функций для изменения формы массивов в numpy flatten, ravelа также для перестановки элементов rot90, flip, fliplrи flipudт. д. Они относятся к разделу numpy от среднего до продвинутого.


Проверьте себя с помощью упражнений

Упражнение:

Используйте правильный метод NumPy, чтобы изменить форму массива с 1D на 2D.

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

newarr = arr.(4, 3)