[英]How could I split an array into subarrays with different dimension with numpy?
我必須將數組划分為3個不同的子數組,維度為w=(N,2), b=(N,1), v=(1,N)
。 他們以前被串聯在一起
u= np.concatenate((b,w.flatten(),v),axis=None)
但是現在我需要划分並得到原始的(w,b,v)
。
我正在嘗試使用np.array_split
但不知道如何執行此操作。
我們可以通過以下方式單獨獲取這些:
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.]])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.