从通过使行成为Python的列表的行中制作矩阵

时间:2019-03-06 22:58:06

标签: python arrays numpy matrix

问题出在这里

  

使用函数row_func(),创建一个函数design_matrix()   作为输入n的整数,并返回第NumPy行的j数组

[1, np.cos(t_j), np.sin(t_j), ... , np.cos(n*t_j), np.sin(n*t_j)]
     

其中t_jj中第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替换为{{ 1}},对吧?

T

def design_matrix(n): X_matrix = np.array(row_func(T,n)) return X_matrix 应该获取row_func()的值并连续计算它们。但是,我得到了:

t

所以我的问题是,如何从行/列中构建矩阵以及为我构建行的函数?

1 个答案:

答案 0 :(得分:1)

您可以尝试使用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)