gpt4 book ai didi

python - 如何使用 numpy 将数组拆分为不同维度的子数组?

转载 作者:行者123 更新时间:2023-12-01 01:28:13 25 4
gpt4 key购买 nike

我必须将一个数组分为 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com