English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Форма массива - это количество элементов в каждом измерении.
Печать формы 2-D массива:
import numpy as np arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]]) print(arr.shape)
Результат выполнения
(2, 4)
Пример上面的 возвращает (2, 4), что означает, что массив имеет 2 измерения, каждый из которых содержит 4 элемента.
Используя ndmin с значением 1,2,3,4 вектор, создать массив с 5 размерами и проверить значение последнего размера 4:
import numpy as np arr = np.array([1, 2, 3, 4], ndmin=5) print(arr) print('форма массива:', arr.shape)
Результат выполнения
[[[[[1 2 3 4]]]]] форма массива: (1, 1, 1, 1, 4)
Целое число на каждом индексе указывает на количество элементов в соответствующей оси.
В примере индекс 4, наше значение 4, поэтому можно сказать, что 5-й (4 + 1) размер имеет 4 элемента.
Форма массива представляет количество элементов в каждой оси. Изменяя форму массива, мы можем добавить или удалить оси или изменить количество элементов в каждой оси.
Преобразовать следующий одномерный массив из 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 2 3] [ 4 5 6] [ 7 8 9] [10 11 12]]
Преобразовать следующий одномерный массив из 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)
Результат выполнения
[[[[ 1 2] [ 3 4] [ 5 6]] [[ 7 8] [ 9 10] [11 12]]]
Да, если количество элементов, необходимых для трансформации, одинаково в обеих формах.
Мы можем преобразовать одномерный массив из 8 элементов в 2 строки 2D массива с 4 элементами, но мы не можем преобразовать его в 3 элемента 3 строки 2D массива, так как это потребует 3x3 = 9 элементов.
Попытка преобразовать одномерный массив с 8 элементами в двумерный массив с 3 элементами в каждой из осей (это вызовет ошибку):
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7, 8]) newarr = arr.reshape(3, 3) print(newarr)
Результат выполнения
Traceback (последний вызов в начале): Файл "test.py", строка 5, в
Вы можете использовать «неизвестное» измерение.
Это означает, что вам не нужно указывать точное число для одного из измерений в методе reshape.
Передача -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 2] [3 4]] [[5 6] [7 8]]]
Флаттеринг массивов (Flattening the arrays) означает преобразование много мерного массива в 1D массив.
Для этого можно использовать reshape(-1).
Преобразование массива в 1D массив:
import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) newarr = arr.reshape(-1) print(newarr)
Результат выполнения
[1 2 3 4 5 6]
Есть много функций, которые можно изменить для изменения формы массивов flatten, ravel, а также для перестановки элементов rot90, flip, fliplr, flipud и т.д. Эти функции относятся к среднему и высокому уровню NumPy.