Вот один из способов написания функции.Пусть base_vector
(ваш x) будет пустым массивом, и пусть max_power
(ваш k) будет целым числом.
import numpy as np
def generate_poly_matrix(base_vector, max_power):
poly_matrix = np.zeros((base_vector.size, max_power + 1))
for (i, j), _ in np.ndenumerate(poly_matrix):
poly_matrix[i, j] = base_vector[i]**j
return poly_matrix
Вот другой способ, использующий другие методы.Неформальное тестирование показало, что они выполняются в одинаковое время.
def generate_poly_matrix2(base_vector, max_power):
base_matrix = np.tile(base_vector, (max_power+1, 1)).T
powers = np.arange(0, max_power+1)
return np.power(base_matrix, powers)