python - 如何使用 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)
这是有效的,因为它是一个具有4×N 个u
元素的向量,看起来像:
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.]])
推荐阅读
- javascript - Javascript - 获取练习(Github 用户)
- django - 按钮和href有什么区别?
- python - 如何避免for循环在列表中附加字典值
- r - 基于分组R组合/连接同一数据框中的行
- python - 消除系统对信号的影响
- node.js - 将函数数据添加到我的模型 - Node/Express
- arrays - 打字稿:对象数组的值字段
- sql - 如何在 Oracle 的数据透视语句中包含行总计?
- android - AAPT:错误:使用 androidx.constraintlayout.widget.ConstraintLayout 时出现未绑定前缀错误
- javascript - 如何为“then”中的变量赋值?