Рубрики
Без рубрики

Ultimate Guide для Numpy Reshape () в Python

[Полное руководство] Все, что вам нужно знать о NP.Reshape ().

Автор оригинала: Chris.

Большинство названий функций в Python могут быть интуитивно подключены к значению функции. Numpy Reshape () Функция не является исключением. Reshape () Функция приносит массив в другую форму, сохраняя все исходные данные.

Numpy’s Reshape () Функция принимает массив, который должен быть изменен в качестве первого аргумента и новой формы кортежа в качестве второго аргумента. Он возвращает новый вид на существующие данные, если возможно – вместо того, чтобы создать полную копию исходного массива. Возвращенный массив ведет себя как новый объект: любое изменение на одном представлении не повлияет на любой другой вид.

Свойство формы Numpy Array

Прежде чем сосредоточиться на Reshape () Функция нам нужно понять Некоторые основные Numpy концепции. Давайте предположим, что у нас есть Большие данные Набор и подсчет количества записей будет невозможной задачей. Мы могли бы использовать Форма Атрибут, чтобы найти количество элементов вдоль каждого измерения этого массива.

Быть осторожным, чтобы помнить тот форма является атрибут и не функция. Атрибуты не имеют скобки после них.

Атрибут формы всегда возвращает кортеж, который сообщает нам длину каждого измерения. Одномерный массив представляет собой вектор строки, и его форма – это одно значение, которое следует запястья. Одномерные массивы не имеют строк и столбцов, поэтому атрибут формы возвращает отдельный кортеж.

Давайте посмотрим на пример:

import numpy as np

#an one-dimensional NumPy array
arr = np.arange(10)

#print an array
print(arr)
# [0 1 2 3 4 5 6 7 8 9]

print(arr.shape)
# (10, )

Кодовый фрагмент также использует Numpy arange Функция для создания начального массива последующих значений от 0 до 9. Пожалуйста, найдите подробное обсуждение Numpy arange Функция в этом блоге Finxter Blog: https://blog.finxter.com/numpy-arange/ Отказ

Атрибут формы двумерного массива (также называемого матрицей) дает нам кортеж. Форма возвращает количество элементов вдоль каждого измерения, которое является количеством рядов и столбцов в двухмерном массиве.

# A two-dimensional NumPy array
import numpy as np

arr = np.array([[1,2,3,4,5], [5,4,3,2,1]])
print(arr.shape)
# (2, 5)

В следующем примере для формы трехмерных массивов.

# A three-dimensional array
import numpy as np

arr = np.array([ [ [0, 11, 15, 16], [3, 7, 10, 34], [44, 99, 5, 67] ],[ [52, 8, 11, 13], [0, 4, 5, 6], [4, 4, 4, 4] ] ])
print(arr.shape)
# (2, 3, 4)

Требуется некоторая практика, чтобы понять кортеж формы для многомерных массивов. Размеры, представленные кортежом, читаются из наружу. Если вы соблюдаете скобки, самый простой кронштейн является частью основного синтаксиса для всего массива. В форме кортежа 2 представляет собой второй набор скобок. Если вы считаете их, вы увидите, что в этом измерении есть 2 элемента.

1-й элемент [0, 11, 15, 16], [3, 7, 10, 34], [44, 99, 5, 67]]]

2-й элемент [[52, 8, 11, 13], [0, 4, 5, 6], [4, 4, 4, 4]]

Каждый элемент содержит еще 3 элемента во втором измерении. Если вы думаете о вложенных списках, вы можете нарисовать аналогию. Эти элементы:

1-й элемент [0, 11, 15, 16]

2-й элемент [3, 7, 10, 34]

3-й элемент [ 44, 99, 5, 67]

Наконец, номер 4 представляет количество элементов в третьем измерении. Это самые внутренние элементы. Например 0, 11, 15 и 16.

Что такое функция Reshape () в Numpy

Как мы относимся к Numpy Форма атрибут для Numpy Reshape () Функция ?

Синтаксис

numpy.reeshape (arr, newshape, заказ)

куда

  • arr это массив, который мы хотим изменить,
  • newshape это целое число для одномерных массивов и кортеж целых чисел нескольких измерений, а также
  • Заказать Необязательный аргумент, который мы не попадем в это руководство.

Изменение массива может быть полезно при очистке данных, или если есть несколько простых элементных расчетов, которые необходимо выполнить. Одним из преимуществ, которые Numpy Array имеет список Python, это способность проще работать векторизированные операции. Более того, решающие массивы распространены в машинном обучении. Имейте в виду, что все элементы в Numpy Array должны быть одинакового типа.

Reshape Numpy Array 1D до 2D

Несколько столбцов

Допустим, мы измеряли внешнюю температуру 3 дня подряд, как в Цельсии, так и в Фаренгейте. Мы записали наше измерение в качестве одномерного вектора, где все даже индексы представляют температуру, написанную в градусах Цельсия, и все нечетные показатели представляют собой температуру, написанную в градусах по Фаренгейту.

temp = [10, 50, 15, 59, 5, 42]

Есть 6 элементов, записанных в одном ряду. Чтобы изменить одномерную Temp Массив до двумерного массива нам нужно пройти кортеж с рядом строк и столбцов к функции Reshape. Этот кортеж будет состоять из двух чисел, давайте назовем их м и N , где первый номер – это количество строк, а второе число – количество столбцов.

Одно очень важное примечание M * N , количество строки умножены по количеству столбцов, должно быть таким же, как номер элементов в оригинальном массиве. В этом примере количество элементов в исходном массиве составляет 6 * 1, который составляет 6.

Итак, у нас есть только два варианта двумерного массива, 2 строк и 3 столбца или 3 столбца и 2 строки.

import numpy as np

temp = [10, 50, 15, 59, 5, 42]

temp = np.reshape(temp, (3,2))
print(temp)

"""
[[10 50]
 [15 59]
 [ 5 42]]
"""

Данные не изменились; Те же элементы в том же порядке. Они перестают в двух рядах и три колонны.

Один столбец

В разделе о атрибуте формы мы говорили, что форма одномерного массива задается кортежным кортежом, который содержит целое число, за которым следует запятая. Затем мы объяснили, что этот вектор не содержит рядов или столбцов.

Что, если мы хотим этот вектор иметь один столбец и столько строк, сколько есть элементы? Мы можем сделать это Использование Reshape () Отказ Несмотря на то, что есть только один столбец, этот массив будет иметь два измерения.

import numpy as np

arr = np.arange(10)
print(arr.shape)
# (10, )

#reshaping this vector
arr = np.reshape(arr, (arr.shape[0], 1))
print(arr.shape)
# (10, 1)

Reshape Numpy Array 2D до 1D

Скажем, мы собираем данные с треки в помещении колледжа, встречаются на прибор для женщин на 200 метров для женщин. Во время первой встречи мы записываем три лучше всего 23,09 секунды, 23,41 секунды, 24,01 секунды. Во время второй встречи мы записываем три лучше всего 22,55 секунды, 23,05 секунды и 23,09 секунды. Мы записываем это в двумерном массиве. Но как только мы начнем анализировать данные, нам нужны результаты, чтобы быть в одной строке. Мы выполняем следующее, чтобы изменить матрицу:

import numpy as np

track = np.array([[23.09, 23.41, 24.01], [22.55, 23.05, 23.09]])
track = np.reshape(track, (6,))

print(track)
# [23.09 23.41 24.01 22.55 23.05 23.09]

print(track.shape)
# (6,)

print(track.ndim)
# 1

Numpy Reshigepe (Arr, -1)

Теперь у нас с большей вероятностью будет ситуация, когда у нас есть Тысячи Записи в наших данных. Скажем, что мы собирали данные от Колледж Внутренний трек встречается на протяжении 200 метров для женщин над последние 3 года. Было легко посчитать количество записей, когда мы было только Шесть, но теперь у нас есть тысячи записей. Вместо того, чтобы сделать жесткую задачу подсчета количества записей, мы можем передать -1 в newshape аргумент

Мы можем показать это в следующем примере:

import numpy as np

track = np.array([[23.09, 23.41, 24.01], [22.55, 23.05, 23.09]])
track = np.reshape(track, -1)

print(track)
# [23.09 23.41 24.01 22.55 23.05 23.09]

print(track.shape)
# (6,)

print(track.ndim)
# 1

Использование -1 для Newshape может быть полезен в многомерных массивах. Мы вернемся к нему в следующем разделе.

Reshape Numpy Array 3D на 2D

Иногда данные, которые мы собираем, будут грязными и до того, как мы начнем анализировать его, нам нужно покидать его. Давайте скажем, у нас есть трехмерный простой массив, который выглядит так:

data = [[[ 0, 1],
 [ 2, 3]],
 [[ 4, 5],
 [ 6, 7]],
 [[ 8, 9],
 [10, 11]],
 [[12, 13],
 [14, 15]]]

Когда мы рассмотрим данные ближе, мы видим, что это будет иметь больше смысла иметь его в качестве двумерной матрицы.

Мы можем подсчитать количество «пар», которые мы хотим иметь. Один из способов сделать это:

data = np.array(data)
data = np.reshape(data, (8,2))
print(data)
"""
[[ 0  1]
 [ 2  3]
 [ 4  5]
 [ 6  7]
 [ 8  9]
 [10 11]
 [12 13]
 [14 15]]
"""

Numpy Remape (-1, M) и изменить (N, -1)

Вышеуказанный метод изменения трехмерного массива до двух измерений работает, если у нас нет большого количества записей. Однако, если у нас есть тысячи записей, это может быть сложно. В этом случае мы можем использовать -1 для одного измерения и, если это возможно, будут изменены данные для нас.

Используя пример выше:

import numpy as np

data = [[[ 0, 1],
 [ 2, 3]],
 [[ 4, 5],
 [ 6, 7]],
 [[ 8, 9],
 [10, 11]],
 [[12, 13],
 [14, 15]]]

data = np.array(data)
data = np.reshape(data, (-1,2))
print(data)
"""
[[ 0  1]
 [ 2  3]
 [ 4  5]
 [ 6  7]
 [ 8  9]
 [10 11]
 [12 13]
 [14 15]]
"""

np.reeshape против np.newaxis.

Когда мы хотим выполнить операции по массивам, они должны быть совместимым размером. Элемент-мудрый, размер массивов должен быть равен в измерении. Но они не должны иметь одинаковое количество измерений. Если размеры не равны, NUMPY бросает ошибку.

Когда массивы разные размеры, один из способов добавления измерения использует функцию Reshape (). Еще один способ – это использовать np.newaxis выражение Отказ Ценность np.newaxis над Reshape () это Что вам не нужно знать количество измерений, которые должны быть добавлены. np.newaxis выражение увеличивает размерность, так что одномерное Массивы становятся Двумерные двумерные массивы становятся трехмерный и скоро…

То, как он работает «ломтиками» массива, добавляя размерность. Если мы посмотрим на оригинальный температурный массив с ранее в руководстве:

import numpy as np

temp = np.array([10, 50, 15, 59, 5, 42])

print(temp.shape)
# (6,)

temp = temp[np.newaxis, :]
print(temp.shape)
# (6,1)

print(temp)
# [[10 50 15 59  5 42]]

Атрибуция

Эта статья способна пользователем Finxter Milica Cvetkovic. Спасибо за тщательную и подробную работу, MILICA! Milica также является писателем на среднем – проверьте ее Средний профиль Отказ

Куда пойти отсюда?

Тщательное понимание Numpy Basics является важной частью образования каких-либо данных ученых. Numpy находится в основе многих передовых машин обучения и научных библиотек данных, таких как Pandas, Tensorflow и Scikit-Suart.

Если вы боретесь с Numpy Library – не бойся нет! Станьте Numpy Professional в кратчайшие сроки с нашим новым учебником кодирования «Coffe Break Numpy». Это не только тщательное введение в Numpy Library, которая повысит вашу ценность на рынке. Также весело пройти большую коллекцию кода головоломки в книге.

Получить ваш перерыв на кофе Numpy!

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.