Автор оригинала: Team Python Pool.
NumPy Reshape: Изменение Формы Массивов С Легкостью
Одной из самых мощных и часто используемых библиотек в python является NumPy. Это помогает нам генерировать высокопроизводительные массивы, над которыми мы можем выполнять различные операции, такие как выполнение столбцов мудрых действий, которые даже не возможны в списках очень быстро. Мы также можем изменить форму наших массивов без каких-либо изменений данных, используя одну из его встроенных функций с помощью функции NumPy reshape.
Под формой массива мы подразумеваем количество элементов в каждом измерении (В 2d-массиве строки и столбцы являются двумя измерениями). И, изменяя форму, мы можем изменить количество измерений, не изменяя данные.
Синтаксис 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-это удобная функция. В основном в машинном обучении и глубоком обучении различные алгоритмы принимают массивы в разных формах, поэтому мы можем использовать эту функцию для изменения массива в любой требуемой форме.
Попробуйте запустить программы на вашей стороне и дайте нам знать, если у вас есть какие-либо вопросы.
Счастливого кодирования!