NumPy疑难问题---1、NumPy切片操作
一、总结
一句话总结:
numpy切片结构:array[start:stop:step,start:stop:step],前面的start:stop:step表示行,后面的start:stop:step表示列,具体细节和python切片操作一样
arr1=np.arange(1,17).reshape((4,4)) print(arr1) [[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12] [13 14 15 16]] print(arr1[1:3,1::2]) [[ 6 8] [10 12]]
1、NumPy切片操作和Python切片操作 的区别?
Python切片操作是一组start:stop:step,NumPy切片操作有两组start:stop:step,前一组表示对行进行操作,后一组表示对列进行操作,具体使用细节都是一样的。
Python切片操作一般是对一维的列表、元组、字符串等进行切片,所以是一组start:stop:step。
NumPy切片操作 一般是对多维数组进行切片,所以有两组start:stop:step,前一组表示对行进行操作,后一组表示对列进行操作。
具体使用细节都是一样的:索引和步长都是有正有负,效果都一样。
二、NumPy切片操作
博客对应课程的视频位置:1、NumPy切片操作-范仁义-读书编程笔记
https://www.fanrenyi.com/video/44/378
numpy切片结构:
array[start:stop:step,start:stop:step]
前面的start:stop:step表示行,后面的start:stop:step表示列
numpy切片使用规则和python中的切片非常相似,start和stop索引有正有负,step也可正负
表示行时,step为正表示从上往下,step为负表示从下往上,step的绝对值表示步长
表示列时,step为正表示从左往右,step为负表示从右往左,step的绝对值表示步长
我们以如下数组为例进行讲解
NumPy切片操作和Python切片操作 的区别
Python切片操作一般是对一维的列表、元组、字符串等进行切片,所以是一组start:stop:step。
NumPy切片操作 一般是对多维数组进行切片,所以有两组start:stop:step,前一组表示对行进行操作,后一组表示对列进行操作。
具体使用细节都是一样的:索引和步长都是有正有负,效果都一样。
In [1]:
import numpy as np
In [2]:
arr1=np.arange(1,17).reshape((4,4))
print(arr1)
1、切取单个值
In [3]:
print(arr1[1])
In [4]:
print(arr1[-1])
In [5]:
print(arr1[1,1])
In [6]:
print(arr1[1,-2])
2、读取行
In [7]:
print(arr1[1:3])
In [9]:
print(arr1[1:3:-1])
In [10]:
print(arr1[3:1:-1])
In [11]:
print(arr1[:1:-1])
In [12]:
print(arr1[:-3:-1])
In [13]:
print(arr1[1:])
In [14]:
print(arr1[:3:2])
In [15]:
print(arr1[-3:-1])
In [16]:
print(arr1[-3:-1:-1])
In [17]:
print(arr1[-3:3])
3、读取行和列
In [18]:
arr1=np.arange(1,17).reshape((4,4))
print(arr1)
In [19]:
print(arr1[1:3,1:3])
In [20]:
print(arr1[1:3,:1:-1])
In [21]:
print(arr1[1:3,-1::-1])
In [22]:
print(arr1[1:3,1:])
In [23]:
print(arr1[1:3,3::-2])
In [24]:
print(arr1[:,1::2])
In [25]:
print(arr1[:,:])
In [27]:
print(arr1[::,::])
4、使用注意
逗号前面的参数省略必须留一个冒号,表示有参数并且省略了,不然会报错
In [26]:
print(arr1[,:])
In [28]:
print(arr1[,])
In [ ]: