【发布时间】:2019-06-26 12:25:48
【问题描述】:
我有一个如下的 NumPy 数组:
arr = np.array([[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20]])
我希望这样安排:
[[[6,7,8,9,10],
[1,2,3,4,5]],
[[11,12,13,14,15],
[6,7,8,9,10]],
[[16,17,18,19,20],
[11,12,13,14,15]]]
所以本质上是一个 3D 数组,数组的每一行都有 2x5。 我试过的代码是:
x=np.zeros([3,2,5])
for i in range(len(arr)):
x[i]=arr[i:i+2,:][::-1]
但这会导致以下输出:
[[[ 6. 7. 8. 9. 10.]
[ 1. 2. 3. 4. 5.]]
[[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0.]]
[[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0.]]]
[[[ 6. 7. 8. 9. 10.]
[ 1. 2. 3. 4. 5.]]
[[11. 12. 13. 14. 15.]
[ 6. 7. 8. 9. 10.]]
[[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0.]]]
[[[ 6. 7. 8. 9. 10.]
[ 1. 2. 3. 4. 5.]]
[[11. 12. 13. 14. 15.]
[ 6. 7. 8. 9. 10.]]
[[16. 17. 18. 19. 20.]
[11. 12. 13. 14. 15.]]]
【问题讨论】:
-
当我尝试执行您的代码尝试时,我得到了一个错误,正如我所期望的那样。如果我将循环的
range更改为range(x.shape[0])(即range(len(x))),我会得到你想要的结果。您确定您粘贴的数组来自上述输入和代码吗?
标签: python arrays numpy reshape