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

标签 python arrays numpy split concatenation

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

相关文章:

python - 使用 Pandas 根据另一列的值选择一列

python - tqdm 和 numpy 向量化

python - 使用 Python 中的优先级队列在 Dijkstra 算法上查找目标节点

python - 类型错误 : An op outside of the function building code is being passed a Graph tensor

java - 对对象数组进行排序会引发 long[] 错误

Ruby:对不包括某些符号的数组进行排序

python - 删除在pyspark中使用numpy.savetxt创建的csv文件

python - 导入错误 : cannot import name md5

javascript - 如何检查数组元素是否包含字符串?

python - 保存大型 numpy 二维数组