'''
Description: numpy中特定行数和列数的截取【矩阵任意截!】
Autor: 365JHWZGo
Date: 2021-11-12 16:34:19
LastEditors: 365JHWZGo
LastEditTime: 2021-11-12 17:06:46
'''
import numpy as np
#create some data
arr = np.linspace(1,30,30).reshape(5,6)
#print data
print('原始数据:\n',arr)
'''
原始数据:
[[ 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.]]
'''
#截取第一行和第一列之后的全部数据
changeArr1 = arr[1:,1:]
print('第一行和第一列之后的全部数据:\n',changeArr1)
'''
第一行和第一列之后的全部数据:
[[ 8. 9. 10. 11. 12.]
[14. 15. 16. 17. 18.]
[20. 21. 22. 23. 24.]
[26. 27. 28. 29. 30.]]
'''
#截取第一行中第一列之后的数据
changeArr2 = arr[1,1:]
print('第一行中第一列之后的数据:\n',changeArr2)
'''
第一行中第一列之后的数据:
[ 8. 9. 10. 11. 12.]
'''
#每行间隔一个截取全部数组
changeArr3 = arr[::2]
print('每行间隔一个截取全部数组:\n',changeArr3)
'''
每行间隔一个截取全部数组:
[[ 1. 2. 3. 4. 5. 6.]
[13. 14. 15. 16. 17. 18.]
[25. 26. 27. 28. 29. 30.]]
'''
#每列间隔一个截取全部数组
changeArr4 = arr[:,::2]
print('每列间隔一个截取全部数组:\n',changeArr4)
'''
每列间隔一个截取全部数组:
[[ 1. 3. 5.]
[ 7. 9. 11.]
[13. 15. 17.]
[19. 21. 23.]
[25. 27. 29.]]
'''
#多维矩阵截取
arr1 = np.linspace(1,30,30).reshape(2,3,5)
print('原始数据:\n',arr1)
'''
原始数据:
[[[ 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.]]]
'''
#截取所有第二维中第二行的前三个数
changeArr5 = arr1[:,1,:3]
print('所有第二维中第二行的前三个数:\n',changeArr5)
'''
所有第二维中第二行的前三个数:
[[ 6. 7. 8.]
[21. 22. 23.]]
'''
总结:
- 亲爱的小伙伴们,有没有看出来逗号的特别呢?
- 每一个逗号分隔一个维度
- 而一个逗号内可以写两个冒号,格式为【起始点:终止点:移动步数】
- 觉得有意思的话,快来试一试吧
- 欢迎看我以前写的理解 a[:,time_step,:] 和 a[:time_step:],这个是神经网络中的应用。