我必须将一个数组分为 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 = [ b<sub>00</sub>, b<sub>10</sub>, …, b<sub>n0</sub>,
w<sub>00</sub>, w<sub>01</sub>, w<sub>10</sub>, w<sub>11</sub>, …, w<sub>n0</sub>, w<sub>n1</sub>,
v<sub>00</sub>, v<sub>01</sub>, …, v<sub>0n</sub>]
因此,需要获取前 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.]])
关于python - 如何使用 numpy 将数组拆分为不同维度的子数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53158399/