Массив с размерностью на 1 больше вводимого
Нужно создать массив, количество строк и стоблцов которого будет на 1 больше вводимого массива.
import numpy as np
y = int(input('Количество элементов строки: '))
x = int(input('Количество строк: '))
matrix = np.array([[y for y in input('Значения матрицы построчно: ').split()] for x in range(x)], dtype=int)
if x < 4 and y< 4:
matrix = np.append(matrix, 1, axis=0)
matrix = np.append(matrix, 1, axis=1)
Пыталась подогнать под вводимую матрицу 3х3, выводит ошибку:
all the input arrays must have same number of dimensions, but the array at index 0 has 2 dimension(s) and the array at index 1 has 0 dimension(s)
Ответы (2 шт):
Автор решения: Эникейщик
→ Ссылка
matrix = np.ndarray(shape=(x+1,y+1))
И потом заполняйте как хотите.
Добавить к уже существующей матрице с известными размерами х и у:
z_x = np.zeros((x, 1))
matrix = np.append(matrix, z_x, axis=1)
z_y = np.zeros((1, y+1))
matrix = np.append(matrix, z_y, axis=0)
print(matrix)
Автор решения: MaxU
→ Ссылка
Пример добавления столбца и строки к существующей матрице:
In [63]: a = np.arange(1, 13).reshape(4, 3)
In [64]: a
Out[64]:
array([[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[10, 11, 12]])
In [65]: a = np.hstack((a, np.zeros((a.shape[0], 1))))
In [66]: a
Out[66]:
array([[ 1., 2., 3., 0.],
[ 4., 5., 6., 0.],
[ 7., 8., 9., 0.],
[10., 11., 12., 0.]])
In [67]: a = np.vstack((a, np.zeros((1, a.shape[1]))))
In [68]: a
Out[68]:
array([[ 1., 2., 3., 0.],
[ 4., 5., 6., 0.],
[ 7., 8., 9., 0.],
[10., 11., 12., 0.],
[ 0., 0., 0., 0.]])