我必须将一个数组划分为维度w=(N,2), b=(N,1), v=(1,N)
的3个不同的子数组。之前已将它们与
u= np.concatenate((b,w.flatten(),v),axis=None)
但是现在我需要划分并获得原始的(w,b,v)
。
我正在尝试np.array_split
,但不知道该怎么做。
答案 0 :(得分:2)
我们可以通过以下方式单独获得这些物品:
b = u[:n].reshape(-1, 1)
v = u[-n:].reshape(1, -1)
w = u[n:-n].reshape(-1, 2)
这是有效的,因为u
是具有 4×N 个元素的向量,看起来像:
u = [ b00, b10, …, bn0,
w00, w01, w10, w11, …, wn0, wn1,
v00, v01, …, v0n]
因此,需要获取第一个 n 个元素,最后一个 n 个元素以及它们之间的元素。
例如对于n=5
,我们可以随机生成三个数组:
>>> w
array([[ 1., -0.],
[-1., 2.],
[ 0., -2.],
[-1., 1.],
[-1., -1.]])
>>> b
array([[ 0.],
[-1.],
[-0.],
[-1.],
[-0.]])
>>> v
array([[-0., -0., -0., -0., -2.]])
然后u
是:
>>> u
array([ 0., -1., -0., -1., -0., 1., -0., -1., 2., 0., -2., -1., 1.,
-1., -1., -0., -0., -0., -0., -2.])
我们可以使用以下方式取回数据
>>> u[:n].reshape(-1, 1) # b
array([[ 0.],
[-1.],
[-0.],
[-1.],
[-0.]])
>>> u[-n:].reshape(1, -1) # v
array([[-0., -0., -0., -0., -2.]])
>>> u[n:-n].reshape(-1, 2) # w
array([[ 1., -0.],
[-1., 2.],
[ 0., -2.],
[-1., 1.],
[-1., -1.]])