我有scipy.signal.con2discrete的输出,该输出生成以下元组:
(array([[1., 0.],
[1., 1.]]), array([[ 0.66 , -0.66 ],
[ 0.33 , -1.49999601]]), array([0., 1.]), array([0., 0.]), 1)
该对象的形状返回(5,)
我想摆脱最后一个'1',并将数组重构为形状(4,3)。也就是说,我想要的最终数组应如下所示:
1., 0., 0.66, -0.66
1., 1., 0.33, -1.5
0., 1., 0., 0.
如何在numpy中有效地做到这一点?
答案 0 :(得分:0)
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. ]])