【发布时间】:2019-12-19 11:13:36
【问题描述】:
我有一个数组如下:
A =
[[ 1. 2. 3. 0. 0. 0. 0.]
[ 4. 5. 6. 0. 0. 0. 0.]
[ 7. 8. 9. 0. 0. 0. 0.]
[ 10. 11. 12. 0. 0. 0. 0.]
[ 13. 14. 15. 0. 0. 0. 0.]
[ 16. 17. 18. 0. 0. 0. 0.]
[ 19. 20. 21. 0. 0. 0. 0.]
[ 22. 23. 24. 0. 0. 0. 0.]
[ 25. 26. 27. 0. 0. 0. 0.]
[ 28. 29. 30. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0.]]
我还有一个向量v=[10, 3],它告诉我需要在哪里切片才能获得左上角的子矩阵:
A[0:v[0], 0:v[1]] =
[[ 1. 2. 3.]
[ 4. 5. 6.]
[ 7. 8. 9.]
[ 10. 11. 12.]
[ 13. 14. 15.]
[ 16. 17. 18.]
[ 19. 20. 21.]
[ 22. 23. 24.]
[ 25. 26. 27.]
[ 28. 29. 30.]]
假设我现在有一个 n 维数组A_n,在它的左上角有一个子矩阵,就像上面的例子一样。同样,有一个向量 v_n 告诉我我的子矩阵的范围。
如何在不手动写入每个索引范围(即A_n[0:v_n[0], 0:v_n[1], 0:v_n[2] ...])的情况下使用向量对 n 维数组进行切片?
【问题讨论】: