Создание матрицы из строк, которые передаются через список, который делает строки Python - PullRequest
1 голос
/ 07 марта 2019

Вот проблема:

Используя функцию 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.

Итак, мой вопрос, как мне построить матрицу из строки / столбца и функцию, которая строит строки для меня?

1 Ответ

1 голос
/ 07 марта 2019

Вы можете попробовать использовать numpy.stack().

def design_matrix(n):
    row_list = []
    for t in T:
        row_list.append(
            np.array(row_func(t, n)))

    return np.stack(row_list, axis=0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...