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

NumPy Reshape: Изменение Формы Массивов С Легкостью

Функция Numpy reshape может быть использована для изменения формы или количества измерений массива. Используя функцию reshape, нет никакой потери данных

Автор оригинала: Team Python Pool.

NumPy Reshape: Изменение Формы Массивов С Легкостью

Одной из самых мощных и часто используемых библиотек в python является NumPy. Это помогает нам генерировать высокопроизводительные массивы, над которыми мы можем выполнять различные операции, такие как выполнение столбцов мудрых действий, которые даже не возможны в списках очень быстро. Мы также можем изменить форму наших массивов без каких-либо изменений данных, используя одну из его встроенных функций с помощью функции NumPy reshape.

Под формой массива мы подразумеваем количество элементов в каждом измерении (В 2d-массиве строки и столбцы являются двумя измерениями). И, изменяя форму, мы можем изменить количество измерений, не изменяя данные.

numpy reshape
numpy reshape

Синтаксис NumPy Reshape

numpy.reshape(a, new shape,)

Параметры в NumPy reshape

  • a: Это массив, который мы хотим изменить.
  • New shape: Это форма, в которую мы хотим преобразовать наш старый массив. Он может быть в виде одного int или кортежа, содержащего целые числа. Мы должны иметь в виду, что новая форма должна быть совместима со старой формой.<сильный> Вы не можете изменить массив 2×3 на 1×7
  • Например, если у вас есть массив элементов размера, вы можете изменить его только на новый массив, который может содержать шесть элементов, таких как 1×6, 3×2, 6×1.
  • order: {‘C’,’A’,’F’ ; необязательно} С помощью этого параметра мы можем читать элементы массива в определенном порядке(индексе).’C’ означает, что работа по строкам с массивом будет немного быстрее.’F’ означает Fortran-стиль, а работа по столбцам будет быстрее.’A’ означает Fortran-подобный порядок, если управление памятью такое же, как и ‘F’, C style в противном случае.
  • ‘C’ означает, что работа с массивом по строкам будет немного быстрее.
  • “F” означает стиль Fortran, и работа по столбцам будет быстрее.
  • “A” означает фортран-подобный порядок, если управление памятью такое же, как и “F”, в противном случае стиль C.

Преобразование массива из 1d в 2d с помощью NumPy reshape

1D массив означает, что у нас есть только один столбец, и там может быть n строк. Мы можем получить любое значение из 1d – массива только с помощью одного атрибута-строки.Например, [1,2,3,4,5,6] – это 1d-массив2d-массив означает, что у нас есть любое количество строк и любое количество столбцов. Да, вы правильно прочитали, сколько угодно колонок. Если вы используете три столбца, массив останется двумерным массивом. В 2d массиве мы можем получить любое значение, используя два атрибута – номер строки и столбца.Теперь давайте узнаем, как преобразовать 1d массив в 2d массив.Примечание – Для использования numpy вам нужно установить его с помощью – pip install numpy

#This is a list
list1=[1,2,3,4,5,6,7,8]
#Converting the list into array.array(list1)
#reshaping the array into array with 2 rows and 4 columns.reshape(array,(2,4))
print("shape of original array: ",array.shape)
print("original array: ", array)
print("reshaped array: ", new_array)
print("shape of reshaped array: ",new_array.shape)
Output-
shape of original array: (8,)
original array: [1 2 3 4 5 6 7 8]
reshaped array: [[1 2 3 4]
[5 6 7 8]]
shape of reshaped array: (2, 4)

Некоторые распространенные ошибки

Если вы попытаетесь преобразовать массив в нечто вроде (2,3), то он покажет следующую ошибку-ValueError: не удается преобразовать массив размера 8 в форму (2,3)Это происходит из-за того, что количество элементов в исходном массиве равно 8. И мы пытаемся преобразовать его в массив размером – (2,3) означает 6 элементов, которые невозможны. Поэтому, пожалуйста, постарайтесь иметь это в виду.

Преобразование 2D массива в 1D массив с помощью NumPy Reshape

Теперь давайте непосредственно преобразуем 2d – массив в 1d-массив. Для этого мы можем дать ‘-1’ в качестве аргумента для нового параметра формы. С помощью этого параметра мы можем преобразовать любой 2d-массив в 1d-массив.

list1=[[11,12,13,14],[15,16,17,18]].array(list1).reshape(array,(-1,1))
print("shape of original array: ",array.shape)
print("original array: ", array)
print("reshaped array: ", new_array)
print("shape of reshaped array: ",new_array.shape)
Output-
shape of original array: (2, 4)
original array: [[11 12 13 14]
[15 16 17 18]]
reshaped array: [[11]
[12]
[13]
[14]
[15]
[16]
[17]
[18]]
shape of reshaped array: (8, 1)

Мы получим тот же результат, если сделаем это,

list1=[[11,12,13,14],[15,16,17,18]].array(list1).reshape(array,8)
print("reshaped array: ", new_array)
print("shape of reshaped array: ",new_array.shape)
Output-
reshaped array: [[11] [12] [13] [14] [15] [16] [17] [18]]
shape of reshaped array: (8, 1)

Преобразование 2d массива в 3d массив с помощью NumPy Reshape

В трехмерном массиве у нас есть 3 измерения. Чтобы получить любое значение, нам нужны три атрибута.

list1=[[11,12,13,14],[15,16,17,18]].array(list1).reshape(array,(2,2,2))
print("shape of original array: ",array.shape)
print("original array: ", array)
print("reshaped array: ", new_array)
print("shape of reshaped array: ",new_array.shape)
Output-
shape of original array: (2, 4)
original array: [[11 12 13 14]
[15 16 17 18]]
reshaped array: [[[11 12]
[13 14]]
[[15 16]
[17 18]]]
shape of reshaped array: (2, 2, 2)

Мы смогли преобразовать 2d массив размерных элементов) в 3d массив размерных элементов (2,2,2), потому что.

Для приведенного выше 3d-массива, если мы хотим получить первый элемент, мы можем сделать это-

print(new_array[0][0][0])
Output-
11

Изменение параметра Порядка в функции reshape

Теперь давайте поиграем с параметром order и понаблюдаем за изменениями, изменив параметр order на другие значения.

Output-
reshaped array1: [[1 2 3 4] [5 6 7 8]]
reshaped array2: [[1 3 5 7] [2 4 6 8]]
reshaped array3: [[1 2 3 4] [5 6 7 8]]

Мы можем ясно наблюдать различия между порядками ” С ” и “F”. В ‘F’ первый элемент в 1-й строке, следующий элемент во 2-й строке и т. Д. Теперь давайте посмотрим, каков будет эффект этих порядков, если мы преобразуем 2d массив в 1 d href=”https://en.wikipedia.org/wiki/Array_data_structure”>массив. href=”https://en.wikipedia.org/wiki/Array_data_structure”>массив.

list1=[[11,12,13,14],[15,16,17,18]].array(list1))))
Order: 'C'
print("reshaped array1: ", new_array1)
Order: 'F'
print("reshaped array2: ", new_array2)
Order: 'A'
print("reshaped array3: ", new_array3)

Опять же, мы можем наблюдать, что в ‘F’ первый элемент 1-го ряда, а затем 1-й элемент 2-го ряда, затем Второй элемент 1-го ряда, а затем второй элемент 2-го ряда.

Должен Читать

  • Как преобразовать строку в нижний регистр в
  • Как вычислить Квадратный корень
  • Пользовательский ввод | Функция ввода () | Ввод с клавиатуры
  • Лучшая книга для изучения Python

Вывод

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

Попробуйте запустить программы на вашей стороне и дайте нам знать, если у вас есть какие-либо вопросы.

Счастливого кодирования!