问题出在这里
使用函数
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_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
替换为{{ 1}},对吧?
T
def design_matrix(n):
X_matrix = np.array(row_func(T,n))
return X_matrix
应该获取row_func()
的值并连续计算它们。但是,我得到了:
t
所以我的问题是,如何从行/列中构建矩阵以及为我构建行的函数?
答案 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)