簡體   English   中英

我如何用numpy將數組拆分為具有不同維度的子數組?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM