3.3 索引与切片
来源:互联网 发布:nginx 访问不同目录 编辑:程序博客网 时间:2024/06/06 09:26
索引或切片都是根据条件对数组的元素进行存取的方法,本节主要介绍一维和二维数组的元素索引、切片索引及花式索引。
3.3.1 元素索引
数组的元素索引方法和Python列表的索引方法相同,用整数作为下标可以获取数组中的某个元素,且索引初值从0开始计算,一维数组的索引示例代码:
>>>a = np.arange(10)>>>aarray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])>>>a[5]5
对于二维数组,索引的第一个参数表示行号,第二个参数表示列号,如果只有一个参数,则表示取得整行数据,示例代码:
>>>b = np.random.randint(0,10,size=(5,5))>>>barray([[0, 1, 7, 8, 1], [5, 3, 7, 9, 2], [9, 4, 8, 4, 1], [6, 5, 9, 5, 9], [6, 5, 6, 1, 9]])>>>b[3] #返回数组b中的第4行所有元素array([6, 5, 9, 5, 9])>>>b[3, 2] #取得第4行第3列的元素9
3.3.2 切片索引
切片索引与Python列表的切片索引不同,通过切片获取的新的数组是原数组的一个视图,它与原数组共享同一块数据存储空间。对于一维数组a,a[3:5]表示用切片获取数组的一部分,包括a[3]但不包括a[5];a[:5]切片中省略开始下标,表示从a[0]开始;a[-1]下标中使用负数,表示从数组最后往前数。示例代码:
>>>a[3:5]array([3, 4])>>>a[:5]array([0, 1, 2, 3, 4])>>>a[:-1]array([0, 1, 2, 3, 4, 5, 6, 7, 8])>>>b = a[3:7]>>>barray([3, 4, 5, 6])>>>b[2] = -10>>>aarray([0, 1, 2, 3, 4, -10, 6, 7, 8, 9])>>>id(a)1366555852848>>>id(b)1366555852848
注意,在以上的示例中,数组a通过切片产生新的数组b,由于b和a共享同一块数据存储空间,将数组b的第2个元素修改为-10后,数组a对应的元素也发生改变。通过Python自带的对象主码查询函数id(),也可以看出数组a和b代表同一个对象。
二维数组的切片索引,示例代码:
>>>c = np.arange(24).reshape((4, 6))>>>carray([[ 0, 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10, 11], [12, 13, 14, 15, 16, 17], [18, 19, 20, 21, 22, 23]])>>>c[0:2, 1]array([1, 7])>>>c[1, : ] # 取第一行所有元素,等价于c[1]array([ 6, 7, 8, 9, 10, 11])>>>c[ :, 1] #取第二列所有元素array([ 1, 7, 13, 19])>>>c[:1]array([[0, 1, 2, 3, 4, 5]])
3.3.3 花式索引
元素索引和切片索引都局限于连续区域的值,而花式索引可以选取特定区域的值。
一维数组的花式索引,示例代码:
>>>a = np.arange(10)>>>a[1:-1:2] #从第2个元素(1)开始遍历到最后(-1),第3个参数表示步长,2表示隔一个元素取一个元素array([1, 3, 5, 7])>>>a[::-1] #省略切片的开始下标和结束下标,步长为-1,整个数组头尾颠倒array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])>>>a[5:1:-2] #步长为负数时,开始下标必须大于结束下标array([5, 3])
二维数组的花式索引,示例代码:
>>>b = np.arange(30).reshape((5, 6))>>>barray([[ 0, 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]])>>>b[2::2,::2] #从第2行开始以步长2开始切片,读取从第0列开始步长为2的所有列的元素array([[12, 14, 16], [24, 26, 28]])>>>b[[1, 4, 3, 2], [0, 3, 1, 2]] #选出的元素坐标为(1, 0),(4, 3),(3, 1),(2, 2)array([ 6, 27, 19, 14])>>>b[[1, 4, 3, 2]][:, [0, 3, 1, 2]] #按0、3、1、2列的顺序依次显示1、4、3、2行array([[ 6, 9, 7, 8], [24, 27, 25, 26], [18, 21, 19, 20], [12, 15, 13, 14]])
此外,ndarray对象也支持布尔索引,即返回表达式布尔值为真的元素的数组,示例代码:
>>>a = np.arange(10)>>>a[a < 3] #取得小于3的所有元素array([0, 1, 2])
阅读全文
0 0
- 3.3 索引与切片
- numpy数组切片与索引
- MY_Swift_数组安全索引与数组切片
- ndarray数组的索引与切片
- python -- 序列索引与切片的一些问题
- python数据分析:numpy数组的索引与切片
- Python切片索引
- python 索引 切片 1
- 索引切片 2
- python_7(索引、切片)
- Numpy : ndarray切片索引
- numpy之索引和切片
- 切片与合并
- 地图发布与切片
- GoLang数组与切片
- Go数组与切片
- Numpy 索引切片及reshape方法小结
- NumPy 索引,切片和迭代
- ShiftyTextview(数字会滚动的TextView)(仿支付宝余额显示,膜拜单车骑行数据显示)
- 静态化缓存-access_token
- POJ1985 Cow Marathon
- FindBugs使用
- java使用poi导出excel的内容,同时可以利用反射进行动态获取信息
- 3.3 索引与切片
- Exchanger 线程之间数据传输
- 数据库的设计
- Android7.0 & 8.0 Language Settings 定制
- 博弈论学习笔记
- C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files没有权限--完美解决
- SPOJ DQUERYD-query(离线线段树,查区间不同数字个数)
- 正则 re.search 最短匹配
- Struts2(十四):类型转换