我有一个数组g
。
g = np.array([])
我有一些循环,我需要在python中使用以下结构构建它:
[
[1 4
2 5
3 6]
[7 10
8 11
9 12]
]
...
即。任意数量的行(假设为10),但每个条目由3x2数组组成。
在顶部初始化g
后,我正在这样做:
curr_g = np.array([])
for y, w in zip(z.T, weights.T):
temp_g = sm.WLS(y, X, w).fit()
# temp_g.params produces a (3L,) array
# curr_g is where I plan to end up with a 3x2 array
curr_g = np.hstack((temp_g.params, curr_g))
g = np.hstack((temp_g.params, g))
我认为当我使用hstack
和两个3x1阵列时,我最终会得到一个3x2阵列。但正在发生的事情是,在堆叠后,curr_g
只是从(3L,)
转到(6L,)
......
另外,一旦我有一个3x2阵列,我如何将3x2阵列叠加在一起?
答案 0 :(得分:1)
你说得对,“当我使用hstack和两个3x1阵列时,我最终会得到一个3x2阵列”:
params =array([1,2,3]).reshape(3,1)
curr_g =array([4,5,6]).reshape(3,1)
print hstack((params, curr_g)).shape # == (3,2)
可能,您会得到一个形状为(6,)
的数组,因为temp_g.params
和g
的形状都为(3,)
,而不是(3,1)
。如果是这种情况,您最好使用column_stack((temp_g.params, curr_g))
。
最后一点,您首先将大数组g
初始化为正确的大小:
g=array((N,3,2))
然后在for循环中填写它:
for j, (y, w) in enumerate(zip(z.T, weights.T)):
#calculate temp_g and curr_g
g[j]=column_stack((temp_g.params, curr_g))