>>> a = np.arange(10).reshape(2,5)
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]])
>>> a[:1,:3]
array([[0, 1, 2]])
>>> a[:2,:3]
array([[0, 1, 2]])
>>> a[:,:3]
array([[0, 1, 2]])
>>> a[:,3] # 直接提取某一元素
array([3]) # 维度会少1
>>> a[:,3:4] # 采用范围进行提取
array([[3]]) # 维度和原来保持一致
→使用范围表达式代表单个位置进行切片可以避免维度减少。
不连续切片时,可以使用np.take() 。
>>> a
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]])
>>> a.take([0],0) # 第二个位置的0,表示按行提取
array([[0, 1, 2, 3, 4]]) # 第一个位置的0,表示提取第0行
>>> a.take([0],1) # 第二个位置的1,表示按列提取
array([[0],
[5]]) # 第一个位置的1,表示提取第1列
然后可以对提取出来的相应行、列,进一步提取,从而实现不连续切片。
>>> a.take([0],0).take([2,4],1)
array([[2, 4]])
参考:
- python 对array进行元素提取、范围切片及不连续多点切片:https://blog.csdn.net/txh3093/article/details/106059024
|