Вот проблема:
Используя функцию row_func()
, создайте функцию design_matrix()
, которая принимает в качестве входных данных целое число n
и возвращает массив NumPy
, чей j
th строка
[1, np.cos(t_j), np.sin(t_j), ... , np.cos(n*t_j), np.sin(n*t_j)]
, где t_j
- это j
значение времени в T
.Другими словами, design_matrix(n)
должен создать матрицу, чья j
-я строка равна row_func(t_j, n)
.
Здесь row_func()
;Сначала я сделал это и проверил, чтобы убедиться, что он работает.
def row_func(t,n):
L = [f for k in range(1,n+1) for f in [np.cos(t*k), np.sin(t*k)]]
L.insert(0,1)
return L
Этот код дает мне ряд чисел, основанный на функции
[1, cos(t), sin(t), cos(2*t), sin(2*t) , ... , cos(n*t), sin(n*t)]
T
также является строкойиз 291 числа, которое я импортировал.
design_matrix(10).shape
должно возвращать значение (629, 21)
, а design_matrix(4)[100,:]
должно возвращать строку
array([ 1. , 0.54030231, 0.84147098, -0.41614684, 0.90929743,
-0.9899925 , 0.14112001, -0.65364362, -0.7568025 ])
Вот что я пробовал: Поскольку я пытаюсь получить j
-ое значение времени в массиве T
, это должно быть так же просто, как заменить t
на T
в моей функции, верно?
def design_matrix(n):
X_matrix = np.array(row_func(T,n))
return X_matrix
row_func()
должен получить значения t
и вычислить их в ряд.Тем не менее, я получаю:
ValueError: setting an array element with a sequence as an error.
Итак, мой вопрос, как мне построить матрицу из строки / столбца и функцию, которая строит строки для меня?