因此考慮的項目的弄清(1維)的順序給定的陣列和所需的陣列中:
In [21]: x = np.array([[[-0.00047776], [-0.00065181]], [[-0.00065181], [ 0.00130446]], [[ 0.00130446], [ 0.00151989]], [[ 0.00151989], [ 0.00121407]], [[ 0.00121407], [-0.00121259]]], dtype=np.float32); x.ravel()
Out[21]:
array([-0.00047776, -0.00065181, -0.00065181, 0.00130446, 0.00130446,
0.00151989, 0.00151989, 0.00121407, 0.00121407, -0.00121259], dtype=float32)
與
In [22]: y = np.array([ [[-0.00047776], [-0.00065181], [ 0.00130446], [ 0.00151989], [ 0.00121407]], [[-0.00065181], [ 0.00130446], [ 0.00151989], [ 0.00121407], [-0.00121259]] ]); y.ravel()
Out[22]:
array([-0.00047776, -0.00065181, 0.00130446, 0.00151989, 0.00121407,
-0.00065181, 0.00130446, 0.00151989, 0.00121407, -0.00121259])
注意,項目順序是不同的。因此,要實現所需的陣列,您必須首先(不知何故)重新排序x
中的項目。在這種情況下using swapaxes
以交換第一和第二軸線的伎倆:
In [23]: x.swapaxes(0,1)
Out[25]:
array([[[-0.00047776],
[-0.00065181],
[ 0.00130446],
[ 0.00151989],
[ 0.00121407]],
[[-0.00065181],
[ 0.00130446],
[ 0.00151989],
[ 0.00121407],
[-0.00121259]]], dtype=float32)
In [26]: np.allclose(x.swapaxes(0,1), y)
Out[26]: True
否重塑是必要的,因爲x.swapaxes(0,1)
已經具有形狀(2,5,1)。
很好的答案,並解釋了很多。我很感激。 – Amer