重塑数组元组
Reshape array tuple
我有 scipy.signal.con2discrete 的输出,它产生以下元组:
(array([[1., 0.],
[1., 1.]]), array([[ 0.66 , -0.66 ],
[ 0.33 , -1.49999601]]), array([0., 1.]), array([0., 0.]), 1)
这个物体的形状returns(5,)
我想去掉最后一个“1”,并重建数组使其具有形状 (4,3)。也就是说,我想要的最终数组应该如下所示:
1., 0., 0.66, -0.66
1., 1., 0.33, -1.5
0., 1., 0., 0.
如何在 numpy 中有效地做到这一点?
In [584]: (array([[1., 0.],
...: [1., 1.]]), array([[ 0.66 , -0.66 ],
...: [ 0.33 , -1.49999601]]), array([0., 1.]), array([0., 0.])
...: , 1)
Out[584]:
(array([[1., 0.],
[1., 1.]]), array([[ 0.66 , -0.66 ],
[ 0.33 , -1.49999601]]), array([0., 1.]), array([0., 0.]), 1)
In [585]: x=_
In [586]: len(x)
Out[586]: 5
In [588]: [i.shape for i in x[:4]]
Out[588]: [(2, 2), (2, 2), (2,), (2,)]
In [590]: np.concatenate((x[0],x[1]), axis=1)
Out[590]:
array([[ 1. , 0. , 0.66 , -0.66 ],
[ 1. , 1. , 0.33 , -1.49999601]])
In [591]: np.concatenate((x[2],x[3]), axis=0)
Out[591]: array([0., 1., 0., 0.])
In [592]: np.vstack((__, _))
Out[592]:
array([[ 1. , 0. , 0.66 , -0.66 ],
[ 1. , 1. , 0.33 , -1.49999601],
[ 0. , 1. , 0. , 0. ]])
看起来 block
可以用来做同样的事情:
In [594]: np.block([[x[0],x[1]],[x[2],x[3]]])
Out[594]:
array([[ 1. , 0. , 0.66 , -0.66 ],
[ 1. , 1. , 0.33 , -1.49999601],
[ 0. , 1. , 0. , 0. ]])
我有 scipy.signal.con2discrete 的输出,它产生以下元组:
(array([[1., 0.],
[1., 1.]]), array([[ 0.66 , -0.66 ],
[ 0.33 , -1.49999601]]), array([0., 1.]), array([0., 0.]), 1)
这个物体的形状returns(5,)
我想去掉最后一个“1”,并重建数组使其具有形状 (4,3)。也就是说,我想要的最终数组应该如下所示:
1., 0., 0.66, -0.66
1., 1., 0.33, -1.5
0., 1., 0., 0.
如何在 numpy 中有效地做到这一点?
In [584]: (array([[1., 0.],
...: [1., 1.]]), array([[ 0.66 , -0.66 ],
...: [ 0.33 , -1.49999601]]), array([0., 1.]), array([0., 0.])
...: , 1)
Out[584]:
(array([[1., 0.],
[1., 1.]]), array([[ 0.66 , -0.66 ],
[ 0.33 , -1.49999601]]), array([0., 1.]), array([0., 0.]), 1)
In [585]: x=_
In [586]: len(x)
Out[586]: 5
In [588]: [i.shape for i in x[:4]]
Out[588]: [(2, 2), (2, 2), (2,), (2,)]
In [590]: np.concatenate((x[0],x[1]), axis=1)
Out[590]:
array([[ 1. , 0. , 0.66 , -0.66 ],
[ 1. , 1. , 0.33 , -1.49999601]])
In [591]: np.concatenate((x[2],x[3]), axis=0)
Out[591]: array([0., 1., 0., 0.])
In [592]: np.vstack((__, _))
Out[592]:
array([[ 1. , 0. , 0.66 , -0.66 ],
[ 1. , 1. , 0.33 , -1.49999601],
[ 0. , 1. , 0. , 0. ]])
看起来 block
可以用来做同样的事情:
In [594]: np.block([[x[0],x[1]],[x[2],x[3]]])
Out[594]:
array([[ 1. , 0. , 0.66 , -0.66 ],
[ 1. , 1. , 0.33 , -1.49999601],
[ 0. , 1. , 0. , 0. ]])