Функция Numpy bmat() возвращает 2D-матрицу из вложенных объектов, состоящих из строки, массива или вложенной последовательности. Она формирует небольшую матрицу из входных данных и объединяет их в большую 2D-матрицу.
Что такое функция Numpy bmat() в Python?
Функция np.bmat() в Python строит объект матрицы из строки, вложенной последовательности или массива. Метод np.bmat() используется для создания матричного объекта из строки, вложенной последовательности или массива.
Синтаксис
|
1 |
numpy.bmat(obj, ldict=None, gdict=None) |
Параметры
- obj: (string or array_like)
Входные данные для построения матрицы. Если это строка, на переменные можно ссылаться по имени в текущей области.
- ldict:(dict,optional)
Словарь, который заменяет локальные операнды в текущем кадре. Игнорировать, если передана строка или для gdict установлено значение NONE.
- gdict:(dict, optional)
Словарь, который заменяет глобальные операнды в текущем кадре. Игнорировать, если передается строка.
Возвращаемое значение
Дает матричный объект входных данных в виде специализированного двумерного массива. Каждый массив и строки преобразуются в маленькую матрицу, а целая матрица создается путем их объединения в большую матрицу.
Пример
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# app.py import numpy as np a=np.mat('1 1; 1 1') b=np.mat('2 2; 2 2') c=np.mat('3 4; 5 6') d=np.mat('7 8; 9 0') np.bmat([[a, b],[c, d]]) w=np.mat('11 11; 11 11') x=np.mat('12 12; 12 12') y=np.mat('13 14; 15 16') z=np.mat('17 18; 19 20') print(np.bmat('w x;y z')) |
Вывод:
|
1 2 3 4 5 |
python3 app.py [[11 11 12 12] [11 11 12 12] [13 14 17 18] [15 16 19 20]] |
Напишем программу, которая показывает функцию bmat и выводит вывод через ввод в виде массива и строки.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# app.py import numpy as np data = [] ir = input("Enter the rows:") ic = input("Enter the cols:") row = int(ir) col = int(ic) print("Enter the data rowise:") for i in range(row): for j in range(col): data.append(int(input())) a = np.array(data).reshape(row, col) print("as array: \n", a) c = np.asmatrix(a) print("as matrix: \n", c) mr = input("Enter the row of modified value:") mc = input("Enter the col of modified value:") mb = input("Enter the value to be modified in the matrix:") n = int(mr) m = int(mc) b = int(mb) a[n - 1, m - 1] = b print("as matrix after modifying value: \n", c) |
Вывод:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
python3 app.py Enter the rows:3 Enter the cols:3 Enter the data rowise: 12 13 14 15 16 17 18 19 20 as array: [[12 13 14] [15 16 17] [18 19 20]] as matrix: [[12 13 14] [15 16 17] [18 19 20]] Enter the row of modified value:2 Enter the col of modified value:2 Enter the value to be modified in the matrix:19 as matrix after modifying value: [[12 13 14] [15 19 17] [18 19 20]] |
Во-первых, мы определили матрицу 3 * 3 с входными данными, а затем определили, какие значения следует изменить, то есть 2 * 2 с 19, и окончательный результат заменил значение на 19. Таким образом, значение 16 заменяется на 19.
Давайте посмотрим на различные варианты вышеприведенной программы на выходе.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
Value of parameter: a=np.mat('4 1; 22 1') b=np.mat('5 2; 5 2') c=np.mat('8 4; 6 6') d=np.mat('7 5; 2 3') For output: via bmat array like input: matrix([[ 4, 1, 5, 2], [22, 1, 5, 2], [ 8, 4, 7, 5], [ 6, 6, 2, 3]]) via bmat string like input: matrix([[ 4, 1, 5, 2], [22, 1, 5, 2], [ 8, 4, 7, 5], [ 6, 6, 2, 3]]) Value of parameter: a=np.mat('14 11; 2 1') b=np.mat('15 12; 15 12') c=np.mat('28 24; 26 26') d=np.mat('37 35; 32 33') For output: via bmat array like input: matrix([[ 14, 11, 15, 12], [2, 1, 15, 12], [ 28, 24, 37, 35], [ 26, 26, 32, 33]]) via bmat string like input: matrix([[ 14, 11, 5, 2], [2, 1, 5, 2], [ 28, 24, 37, 35], [ 26, 26, 32, 33]]) Value of parameter: a=np.mat('44 14; 52 51') b=np.mat('65 62; 65 62') c=np.mat('78 74; 76 76') d=np.mat('87 85; 82 83') For output: via bmat array like input: matrix([[ 44, 14, 65, 62], [52, 51, 65, 62], [ 78, 74, 87, 85], [ 76, 76, 82, 83]]) via bmat string like input: matrix([[ 44, 14, 65, 62], [52, 51, 65, 62], [ 78, 74, 87, 85], [ 76, 76, 82, 83]]) |
Здесь двумерная матрица формируется из введенного массива и строк. Входные данные сначала формируются в небольшую матрицу, а затем преобразуются в большую матрицу.
Каждый вход формируется в маленькую матрицу внутри большей матрицы. Входные данные могут быть в формате строк или массива; эта функция преобразует их в матрицу и возвращает матрицу.
